婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET.4.5.1+MVC5.0設置系統角色與權限(一)

ASP.NET.4.5.1+MVC5.0設置系統角色與權限(一)

熱門標簽:威海電銷 t3出行地圖標注怎么做 400電話辦理最優質 外呼電銷機器人軟件 關于宗地圖標注技術規范 400免費電話怎么辦理 河南語音外呼系統公司 寧夏機器人電銷 河北網絡回撥外呼系統

數據結構

權限分配

1.在項目中新建文件夾Helpers

2.在HR.Helpers文件夾下添加EnumMoudle.Cs

復制代碼 代碼如下:

namespace HR.Helpers
{
    public enum EnumMoudle
    {
        /// summary>
        /// 模塊
        /// /summary>
        [EnumTitle("用戶管理")]
        SysUserManage_Role = 102,
        [EnumTitle("機構管理")]
        Department = 201,
        [EnumTitle("人事資料")]
        Employees = 301,
        [EnumTitle("系統管理")]
        BaseInfo = 404,
    }
}

3.在HR.Helpers文件夾下添加ControllerBase.Cs

復制代碼 代碼如下:

namespace HR.Helpers
{
    public class ControllerBase : Controller
    {
        /// summary>
        /// 操作人,傳IP....到后端記錄
        /// /summary>
        public virtual Operater Operater
        {
            get
            {
                return null;
            }
        }
        /// summary>
        /// 分頁大小
        /// /summary>
        public virtual int PageSize
        {
            get
            {
                return 15;
            }
        }
        protected ContentResult JsonP(string callback, object data)
        {
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            return this.Content(string.Format("{0}({1})", callback, json));
        }
        /// summary>
        /// 當彈出DIV彈窗時,需要刷新瀏覽器整個頁面
        /// /summary>
        /// returns>/returns>
        public ContentResult RefreshParent(string alert = null)
        {
            var script = string.Format("script>{0}; parent.location.reload(1)/script>", string.IsNullOrEmpty(alert) ? string.Empty : "alert('" + alert + "')");
            return this.Content(script);
        }
        public new ContentResult RefreshParentTab(string alert = null)
        {
            var script = string.Format("script>{0}; if (window.opener != null) {{ window.opener.location.reload(); window.opener = null;window.open('', '_self', '');  window.close()}} else {{parent.location.reload(1)}}/script>", string.IsNullOrEmpty(alert) ? string.Empty : "alert('" + alert + "')");
            return this.Content(script);
        }
        /// summary>
        /// 用JS關閉彈窗
        /// /summary>
        /// returns>/returns>
        public ContentResult CloseThickbox()
        {
            return this.Content("script>top.tb_remove()/script>");
        }
        /// summary>
        ///  警告并且歷史返回
        /// /summary>
        /// param name="notice">/param>
        /// returns>/returns>
        public ContentResult Back(string notice)
        {
            var content = new StringBuilder("script>");
            if (!string.IsNullOrEmpty(notice))
                content.AppendFormat("alert('{0}');", notice);
            content.Append("history.go(-1)/script>");
            return this.Content(content.ToString());
        }
        public ContentResult PageReturn(string msg, string url = null)
        {
            var content = new StringBuilder("script type='text/javascript'>");
            if (!string.IsNullOrEmpty(msg))
                content.AppendFormat("alert('{0}');", msg);
            if (string.IsNullOrWhiteSpace(url))
                url = Request.Url.ToString();
            content.Append("window.location.href='" + url + "'/script>");
            return this.Content(content.ToString());
        }
        /// summary>
        /// 轉向到一個提示頁面,然后自動返回指定的頁面
        /// /summary>
        /// param name="notice">/param>
        /// param name="redirect">/param>
        /// returns>/returns>
        public ContentResult Stop(string notice, string redirect, bool isAlert = false)
        {
            var content = "meta http-equiv='refresh' content='1;url=" + redirect + "' />body style='margin-top:0px;color:red;font-size:24px;'>" + notice + "/body>";
            if (isAlert)
                content = string.Format("script>alert('{0}'); window.location.href='{1}'/script>", notice, redirect);
            return this.Content(content);
        }
        /// summary>
        /// 在方法執行前更新操作人
        /// /summary>
        /// param name="filterContext">/param>
        public virtual void UpdateOperater(ActionExecutingContext filterContext)
        {
            if (this.Operater == null)
                return;
            WCFContext.Current.Operater = this.Operater;
        }
        public virtual void ClearOperater()
        {
            //TODO
        }
        /// summary>
        /// AOP攔截,在Action執行后
        /// /summary>
        /// param name="filterContext">filter context/param>
        protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            base.OnActionExecuted(filterContext);
            if (!filterContext.RequestContext.HttpContext.Request.IsAjaxRequest() !filterContext.IsChildAction)
                RenderViewData();
            this.ClearOperater();
        }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            this.UpdateOperater(filterContext);
            base.OnActionExecuting(filterContext);
            //在方法執行前,附加上PageSize值
            filterContext.ActionParameters.Values.Where(v => v is Request).ToList().ForEach(v => ((Request)v).PageSize = this.PageSize);
        }
        /// summary>
        /// 產生一些視圖數據
        /// /summary>
        protected virtual void RenderViewData()
        {
        }
        /// summary>
        /// 當前Http上下文信息,用于寫Log或其他作用
        /// /summary>
        public WebExceptionContext WebExceptionContext
        {
            get
            {
                var exceptionContext = new WebExceptionContext
                {
                    IP = Fetch.UserIp,
                    CurrentUrl = Fetch.CurrentUrl,
                    RefUrl = (Request == null || Request.UrlReferrer == null) ? string.Empty : Request.UrlReferrer.AbsoluteUri,
                    IsAjaxRequest = (Request == null) ? false : Request.IsAjaxRequest(),
                    FormData = (Request == null) ? null : Request.Form,
                    QueryData = (Request == null) ? null : Request.QueryString,
                    RouteData = (Request == null || Request.RequestContext == null || Request.RequestContext.RouteData == null) ? null : Request.RequestContext.RouteData.Values
                };
                return exceptionContext;
            }
        }
        /// summary>
        /// 發生異常寫Log
        /// /summary>
        /// param name="filterContext">/param>
        protected override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            var e = filterContext.Exception;
            LogException(e, this.WebExceptionContext);
        }
        protected virtual void LogException(Exception exception, WebExceptionContext exceptionContext = null)
        {
            //do nothing!
        }
    }
    public class WebExceptionContext
    {
        public string IP { get; set; }
        public string CurrentUrl { get; set; }
        public string RefUrl { get; set; }
        public bool IsAjaxRequest { get; set; }
        public NameValueCollection FormData { get; set; }
        public NameValueCollection QueryData { get; set; }
        public RouteValueDictionary RouteData { get; set; }
    }
}

4.在項目文件夾中新建ControllerBase.cs

復制代碼 代碼如下:

namespace HR
{
    public abstract class ControllerBase:HR.Helpers.ControllerBase
    {
        protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            base.OnActionExecuted(filterContext);
        }

        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
        }
    }
}

5.在項目中新建RoleControllerBase.cs

復制代碼 代碼如下:

namespace HR
{
    public class RoleControllerBase : ControllerBase
    {
        SystemUserRepository sysuserrepository = new SystemUserRepository();
        /// summary>
        /// 用戶權限
        /// /summary>
        public virtual ListEnumMoudle> PermissionList
        {
            get
            {
                var permissionList = new ListEnumMoudle>();
                return permissionList;
            }
        }
        public string BusinessPermissionString { get; set; }
        [NotMapped]
        public ListEnumMoudle> BusinessPermissionList
        {
            get
            {
                if (string.IsNullOrEmpty(BusinessPermissionString))
                    return new ListEnumMoudle>();
                else
                    return BusinessPermissionString.Split(",".ToCharArray()).Select(p => int.Parse(p)).CastEnumMoudle>().ToList();
            }
            set
            {
                BusinessPermissionString = string.Join(",", value.Select(p => (int)p));
            }
        }
        /// summary>
        /// Action方法執行前沒有權限提示信息
        /// /summary>
        /// param name="filterContext">/param>
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var noAuthorizeAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AuthorizeIgnoreAttribute), false);
            if (noAuthorizeAttributes.Length > 0)
                return;
            base.OnActionExecuting(filterContext);
            bool hasPermission = true;
            var permissionAttributes = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).CastPermissionAttribute>();
            permissionAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).CastPermissionAttribute>().Union(permissionAttributes);
            var attributes = permissionAttributes as IListPermissionAttribute> ?? permissionAttributes.ToList();
            if (permissionAttributes != null attributes.Count() > 0)
            {
                 string cookie = CookieHelper.GetValue("SystemUserID");
                 if (string.IsNullOrEmpty(cookie))
                 {
                     filterContext.Result = Content("您沒有登錄!");
                 }
                 else
                 {
                     int mid = int.Parse(CookieHelper.GetValue("SystemUserID"));
                     var model = sysuserrepository.GetModel(mid);
                     BusinessPermissionString = model.BusinessPermissionString;
                     hasPermission = true;
                     foreach (var attr in attributes)
                     {
                         foreach (var permission in attr.Permissions)
                         {
                             if (!BusinessPermissionList.Contains(permission))
                             {
                                 hasPermission = false;
                                 break;
                             }
                         }
                     }
                     if (!hasPermission)
                     {
                         if (Request.UrlReferrer != null)
                             filterContext.Result = this.Stop("您沒有權限!", "/default/ng");
                         else
                             filterContext.Result = Content("您沒有權限!");
                     }
                 }
            }
        }
    }
}

6.在每個Controller繼承RoleControllerBase類

public class EmployeesController : RoleControllerBase

7.在HR.Helpers文件夾下添加PermissionAttribute.Cs ,并繼承 FilterAttribute, IActionFilter

復制代碼 代碼如下:

namespace HR.Helpers
{
    public class PermissionAttribute : FilterAttribute, IActionFilter
    {
        public ListEnumMoudle> Permissions { get; set; }

        public PermissionAttribute(params EnumMoudle[] parameters)
        {
            Permissions = parameters.ToList();
        }

        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            //throw new NotImplementedException();
        }

        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //throw new NotImplementedException();
        }
    }
}

8.然后在Controller或者Action方法加上驗證

復制代碼 代碼如下:

 [Permission(EnumMoudle.Employees),Authorize, ValidateInput(false)]
 [Permission(EnumMoudle.SysUserManage_Role)]

9.在用戶管理Controller中添加權限分配,修改方法

復制代碼 代碼如下:

        #region 添加管理員
        /// summary>
        /// 添加頁
        /// /summary>
        /// param name="model">管理員實體類/param>
        /// returns>/returns>
        [Authorize]
        public ActionResult Add()
        {
            var moudleList = EnumHelper.GetItemValueListEnumMoudle>();
            this.ViewBag.MoudleList = new SelectList(mouldeList, "Key", "Value");
            return View();
        }
        /// summary>
        /// 添加事件
        /// /summary>
        /// param name="model">實體類/param>
        /// param name="fc">/param>
        /// returns>/returns>
        [Authorize, HttpPost, ValidateInput(false)]
        public ActionResult Add(SystemUser model, FormCollection fc)
        {
            model.BusinessPermissionString = fc["MoudelList"];
            model.State = 1;
            model.CreateTime = DateTime.Now;
            systemuserrepository.SaveOrEditModel(model);
            return RedirectToAction("UserList");
        }
        #endregion
        //修改權限
        [Authorize, AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult Edit(int id, FormCollection fc)
        {
            var model = systemuserrepository.GetModel(id);
            if (model != null)
            {
                string password = model.PassWord;
                if (Request.Form["PassWord"] != "")
                {
                    model.BusinessPermissionString = fc["MoudleList"];
                    UpdateModel(model);
                    systemuserrepository.SaveOrEditModel(model);
                }
                else
                {
                    model.BusinessPermissionString = fc["MoudleList"];
                    UpdateModel(model);
                    model.PassWord = password;
                    systemuserrepository.SaveOrEditModel(model);
                }
                return RedirectToAction("userlist");
            }
            else
                return View("404");
        }
        #endregion

復制代碼 代碼如下:

        [Authorize]
        public ActionResult Edit(int id)
        {
            var model = systemuserrepository.GetModel(id);
            if (model != null)
            {
                var moudleList = EnumHelper.GetItemValueListEnumBusinessPermission>();
                this.ViewBag.MoudleList = new SelectList(moudleList, "Key", "Value", string.Join(",", model.BusinessPermissionString.ToString()));
                return View(model);
            }
            else
                return View("404");
        }

以上就是本文的全部內容了,后續我們將持續更新,小伙伴們是否喜歡本系列文章呢?

您可能感興趣的文章:
  • .NET Web開發之.NET MVC框架介紹
  • asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
  • 使用asp.net MVC4中的Bundle遇到的問題及解決辦法分享
  • asp.net MVC實現無組件上傳圖片實例介紹
  • Asp.net實現MVC處理文件的上傳下載功能實例教程
  • asp.net如何進行mvc異步查詢

標簽:池州 廣元 固原 淮北 吉林 賀州 樂山 咸寧

巨人網絡通訊聲明:本文標題《ASP.NET.4.5.1+MVC5.0設置系統角色與權限(一)》,本文關鍵詞  ASP.NET.4.5.1+MVC5.0,設置,系統,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET.4.5.1+MVC5.0設置系統角色與權限(一)》相關的同類信息!
  • 本頁收集關于ASP.NET.4.5.1+MVC5.0設置系統角色與權限(一)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久精品在这里| 91天堂素人约啪| 欧洲另类一二三四区| 国产精品色婷婷| 久久亚区不卡日本| 国产欧美日韩在线观看| 国产一本一道久久香蕉| 蜜桃av一区二区在线观看| 精品奇米国产一区二区三区| 亚洲一级二级三级| 亚洲第一福利视频在线| 依依成人精品视频| 免费成人在线观看视频| 亚洲综合区在线| 亚洲国产三级在线| 亚洲午夜久久久久久久久电影网| 久久精品一区二区三区不卡牛牛| 一区二区三区产品免费精品久久75| 亚洲美女免费视频| 国产精品短视频| 国产精品久久久久三级| 中文在线一区二区| 国产精品麻豆网站| 欧美va亚洲va| 国产视频在线观看一区二区三区| 欧美一区二区三区成人| 日韩精品中文字幕一区二区三区| 久久久www免费人成精品| 精品视频在线看| 色播五月激情综合网| 91精品国产综合久久久久久久久久| 91影院在线免费观看| 亚洲国产精品成人久久综合一区| 欧美日韩一区二区电影| 欧美中文字幕亚洲一区二区va在线 | 精品无码三级在线观看视频| 国产美女视频91| 成人一二三区视频| 欧美性做爰猛烈叫床潮| 精品久久久久香蕉网| 亚洲欧洲日韩一区二区三区| |精品福利一区二区三区| 亚洲一区二区三区四区的| 午夜精品久久久久久久久| 成人免费视频app| 欧美一区午夜精品| 亚洲一区二区三区不卡国产欧美| 丰满亚洲少妇av| 91精品国产一区二区人妖| 精品综合久久久久久8888| 五月天一区二区三区| 国产一区二区三区在线观看免费| 蜜臀av性久久久久蜜臀av麻豆| 风间由美一区二区三区在线观看| 欧美高清dvd| 久久久久久97三级| 国产老女人精品毛片久久| 欧美日韩亚洲另类| 欧美日韩国产高清一区二区| 欧美日韩色综合| 成人精品视频一区二区三区| 色综合久久88色综合天天| 亚洲动漫第一页| 欧美在线啊v一区| 国产精品美日韩| 色综合久久99| 亚洲欧洲日本在线| 久久精品国产网站| 国产91在线看| 视频一区二区国产| 正在播放一区二区| 欧美一区二区成人| 亚洲综合偷拍欧美一区色| 日本丰满少妇一区二区三区| 一区二区三区小说| 91美女精品福利| 欧美精品v国产精品v日韩精品| 日本欧美一区二区| 日韩毛片精品高清免费| 日韩欧美成人激情| 色老汉一区二区三区| 日韩黄色免费电影| 国产农村妇女毛片精品久久麻豆 | 欧美日韩三级在线| 白白色亚洲国产精品| 欧美日韩视频在线一区二区| 一区二区三区在线观看视频| 欧美午夜影院一区| 丁香六月久久综合狠狠色| 欧美激情一区二区三区蜜桃视频 | 麻豆精品视频在线观看免费| 国产精品主播直播| 日韩国产高清在线| 久久久精品国产免费观看同学| 欧美怡红院视频| 国产成人8x视频一区二区| 亚洲成人精品一区二区| 国产精品电影院| 久久亚洲综合av| 欧美一级xxx| 在线播放亚洲一区| 欧美精品乱人伦久久久久久| 青青草国产成人av片免费 | 免费成人性网站| 一色桃子久久精品亚洲| 亚洲欧洲成人自拍| 日韩伦理电影网| 一区二区三区美女视频| 亚洲另类色综合网站| 日韩一级完整毛片| 精品午夜久久福利影院| 日韩女优电影在线观看| 色屁屁一区二区| 91久久线看在观草草青青| eeuss鲁一区二区三区| 成人性视频免费网站| caoporn国产精品| 91蜜桃传媒精品久久久一区二区| 97精品视频在线观看自产线路二| 91一区二区三区在线观看| 欧美午夜片在线观看| 欧美婷婷六月丁香综合色| 裸体一区二区三区| 午夜av一区二区三区| 亚洲精品欧美激情| 国产午夜亚洲精品羞羞网站| 久久se精品一区精品二区| 日韩电影一二三区| 精品一区二区三区香蕉蜜桃| 精品一区二区三区久久| 国产精品久久精品日日| 波多野结衣在线一区| 99精品国产91久久久久久| 色94色欧美sute亚洲线路二| 久久久亚洲综合| 五月天网站亚洲| 一本一本大道香蕉久在线精品| 欧美精品久久一区| 最新国产の精品合集bt伙计| 日韩成人免费在线| 99精品1区2区| 日韩欧美一区二区视频| 激情综合网最新| 麻豆久久久久久| 97成人超碰视| 国产亚洲欧美一区在线观看| 亚洲视频在线观看三级| 精品在线免费观看| 91精品婷婷国产综合久久| 亚洲综合成人网| 欧美私人免费视频| 日本一区二区三级电影在线观看| 久久不见久久见免费视频7| 91麻豆精品国产91久久久更新时间| 亚洲免费av网站| 在线视频欧美区| 亚洲成人动漫在线观看| 欧美日韩国产天堂| 亚洲国产精品人人做人人爽| 欧美日韩国产经典色站一区二区三区| 亚洲综合在线第一页| 欧美美女网站色| 久久不见久久见免费视频7| 国产欧美精品一区| 欧美浪妇xxxx高跟鞋交| 国产麻豆成人传媒免费观看| 国产精品卡一卡二| 正在播放一区二区| av一区二区不卡| 美国十次综合导航| 4438亚洲最大| 94-欧美-setu| 国产呦精品一区二区三区网站| 国产视频一区二区三区在线观看| 激情五月播播久久久精品| 午夜欧美电影在线观看| 专区另类欧美日韩| 精品福利一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 日韩福利视频网| 亚洲视频在线观看三级| 久久精品亚洲麻豆av一区二区| 欧美视频你懂的| 色网站国产精品| 91同城在线观看| 福利一区二区在线| 久久精品国产亚洲a| 97国产一区二区| 免费在线观看成人| 丝袜美腿亚洲一区| 午夜精品久久久久久| 亚洲一区二区三区国产| 日本一区二区成人| 日韩精品一区在线| 99久久精品国产毛片| 国产在线视频一区二区| 麻豆国产欧美一区二区三区| 五月综合激情网| 日本不卡一区二区| 亚洲精品免费播放|