亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在EF的code frist下寫穩健的權限管理系統:MVC過濾攔截,權限核心(五)

2019-11-17 02:11:34
字體:
來源:轉載
供稿:網友

在EF的code frist下寫穩健的權限管理系統:MVC過濾攔截,權限核心(五)

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]    public class PowerAttribute : FilterAttribute, IActionFilter    {        public void OnActionExecuted(ActionExecutedContext filterContext)        {            //throw new NotImplementedException();        }        /// <summary>        /// 權限標示名        /// </summary>        public string PowerName { get; set; }        /// <summary>        /// 是否超級管理員應用        /// </summary>        public bool IsSuper = false;        PRotected User LoginUser = null;        protected PowerConfig Power = null;        public IPowerConfigService powerConfigService = AutofacDependencyResolver.Current.applicationContainer.Resolve<IPowerConfigService>();                public void OnActionExecuting(ActionExecutingContext filterContext)        {            LoginUser = CacheHelper.GetCache(Constant.CacheKey.LoginUserInfoCacheKey + "_" + filterContext.HttpContext.User.Identity.Name) as User;            bool b = false;            if (IsSuper == false)            {                //非超級管理員專屬操作                //權限id集合                string[] acts = LoginUser.Role.ActionIds.Split(',');                Power = CacheHelper.GetCache(Constant.CacheKey.PowerConfigCacheKey) as PowerConfig;                if (Power == null)                {                    Power = powerConfigService.LoadConfig(Constant.PowerConfigPath);                    CacheHelper.SetCache(Constant.CacheKey.PowerConfigCacheKey, Power);                }                try                {                    if (Power != null)                    {                        var p = Power.PowerList.FirstOrDefault(t => t.Name == PowerName);                        if (p != null)                        {                            if (acts.Contains(p.Id.ToString()))                            {                                //存在權限                                b = true;                            }                        }                    }                }                catch                {                    b = false;                }            }            //超級管理員都可以使用            if (LoginUser.IsSuperUser)            {                b = true;            }            #region 無權限執行            if (b == false)            { //無權限執行                if (filterContext.HttpContext.Request.IsAjaxRequest())                {                    //filterContext.Result = new JsonResult() {                    //    Data = new { pass = false, error = "無權訪問" },                    //    JsonRequestBehavior=JsonRequestBehavior.AllowGet                    //};                    filterContext.Result = new ContentResult()                    {                        Content = "無權訪問",                        ContentEncoding = Encoding.UTF8                    };                }                else                {                    filterContext.Controller.ViewData["ErrorMessage"] = "無權訪問";//filterContext.Exception.Message + " 親!您犯錯了哦!";//得到報錯的內容                    filterContext.Result = new ViewResult()//new一個url為Error視圖                    {                        ViewName = "Error",/*在Shard文件夾下*/                        ViewData = filterContext.Controller.ViewData//view視圖的屬性中的viewdata被賦值                    };                }            }            #endregion        }    }

使用這個過濾攔截各種action的訪問,做到權限的顆粒化,使用時候直接在action或者controller的頭部加[Power(IsSuper=true,PowerName="權限名")],IsSuper是針對系統超級管理員設計,判斷action是否為系統級別的action,一般是配置或者高權限的action使用,普通可以不寫,或者為false。

power的參數配置我放到了兩個地方,一個數據庫,另一個是config文件,數據庫可以通過我設計的導出,直接變成config。在運行時候根據角色的actionId去配置文件中取出ID對應的powername,然后根據powename進行判斷(powername可以重復,有利于action的細化分組)

<?xml version="1.0"?><PowerConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <PowerGroupList>    <PowerGroup>      <GroupName>操作組一</GroupName>      <Id>1</Id>    </PowerGroup>    <PowerGroup>      <GroupName>操作組二</GroupName>      <Id>2</Id>    </PowerGroup>  </PowerGroupList>  <PowerList>    <Power>      <ParamStr>/cms/1234</ParamStr>      <Name>統計</Name>      <GroupId>1</GroupId>      <Id>2</Id>    </Power>    <Power>      <ParamStr>/cms/12345</ParamStr>      <Name>介紹</Name>      <GroupId>1</GroupId>      <Id>3</Id>    </Power>    <Power>      <ParamStr>/links/123</ParamStr>      <Name>友情鏈接</Name>      <GroupId>1</GroupId>      <Id>7</Id>    </Power>    <Power>      <ParamStr>/cms/123</ParamStr>      <Name>合作單位</Name>      <GroupId>1</GroupId>      <Id>8</Id>    </Power>    <Power>      <ParamStr>/proj</ParamStr>      <Name>產品展示</Name>      <GroupId>1</GroupId>      <Id>9</Id>    </Power>    <Power>      <ParamStr>/message</ParamStr>      <Name>客戶留言</Name>      <GroupId>1</GroupId>      <Id>10</Id>    </Power>    <Power>      <ParamStr>/gundong</ParamStr>      <Name>滾動圖</Name>      <GroupId>1</GroupId>      <Id>11</Id>    </Power>    <Power>      <ParamStr>/guangao</ParamStr>      <Name>廣告位</Name>      <GroupId>1</GroupId>      <Id>12</Id>    </Power>    <Power>      <ParamStr>/cms/123</ParamStr>      <Name>文章</Name>      <GroupId>2</GroupId>      <Id>1</Id>    </Power>    <Power>      <ParamStr>/admin/ActionAdd</ParamStr>      <Name>文章查看</Name>      <GroupId>2</GroupId>      <Id>4</Id>    </Power>    <Power>      <ParamStr>/cms/12</ParamStr>      <Name>文章刪除</Name>      <GroupId>2</GroupId>      <Id>5</Id>    </Power>    <Power>      <ParamStr>/cms/123</ParamStr>      <Name>文章修改</Name>      <GroupId>2</GroupId>      <Id>6</Id>    </Power>  </PowerList></PowerConfig>

上面就是生成的config,運行時候會加載到緩存,提高性能。他的生成是基于,Action和ActionGroup的,而Action和ActionGroup數據會存儲到數據庫,可以可視化添加。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线最新| 亚洲图片欧美日产| 国产成人精品a视频一区www| 亚洲精品一区二三区不卡| 亚洲白虎美女被爆操| 久久福利视频导航| 日韩在线视频免费观看| 91欧美精品午夜性色福利在线| 狠狠色狠狠色综合日日五| 亚洲电影中文字幕| 国产欧美一区二区三区久久人妖| 国产在线不卡精品| 亚洲永久在线观看| 国产视频综合在线| 欧美伊久线香蕉线新在线| 色伦专区97中文字幕| 亚洲aaa激情| 日韩欧美在线视频日韩欧美在线视频| 国产91色在线免费| 97视频人免费观看| xvideos成人免费中文版| 91精品国产91久久久久久| 精品久久香蕉国产线看观看gif| 亚洲欧美一区二区精品久久久| 亚洲成年人在线| 欧美日本在线视频中文字字幕| 在线视频欧美日韩| 激情成人在线视频| 国产一区二区三区三区在线观看| 在线成人激情视频| 日韩欧美有码在线| 日本精品性网站在线观看| 韩日欧美一区二区| 日韩激情视频在线播放| 久久国产精品久久久久久久久久| 国产极品精品在线观看| 亚洲成人教育av| 大伊人狠狠躁夜夜躁av一区| 欧美综合一区第一页| 成人免费网站在线观看| 国产精品∨欧美精品v日韩精品| 国产精品一区二区久久| 欧美黑人性生活视频| 国产精品嫩草视频| 久久免费视频网站| 国产精品视频不卡| 国产91在线高潮白浆在线观看| 欧美日韩xxx| 亚洲激情成人网| 久久黄色av网站| 精品欧美国产一区二区三区| 亚洲综合在线做性| 精品亚洲男同gayvideo网站| 国产精品jvid在线观看蜜臀| 69av在线播放| 91免费在线视频| 成人有码在线视频| 色狠狠av一区二区三区香蕉蜜桃| 2019精品视频| 欧美精品久久久久久久久久| 欧美激情精品久久久久久免费印度| 91欧美精品成人综合在线观看| 日韩欧美国产高清91| 狠狠久久五月精品中文字幕| 久久99国产精品自在自在app| 国产欧美一区二区三区视频| 亚洲第一黄色网| 午夜精品久久久久久久男人的天堂| 成人夜晚看av| 亚洲va久久久噜噜噜久久天堂| 在线观看不卡av| 亚洲精品一区在线观看香蕉| 亚洲成人黄色网| 亚洲一区二区久久久久久| 国产日产久久高清欧美一区| 久久亚洲电影天堂| 九九热这里只有精品6| www国产亚洲精品久久网站| 亚洲人成五月天| 在线精品91av| 国产精品444| 一区二区三区视频免费在线观看| 国产成人在线播放| 欧美激情在线一区| 92福利视频午夜1000合集在线观看| 国产日韩在线精品av| 亚洲日本欧美中文幕| 国产精品www网站| 精品国产区一区二区三区在线观看| 日韩免费在线播放| 久久香蕉国产线看观看av| 久久久久国产精品一区| 久久久av网站| 国产精品高潮呻吟久久av野狼| 国产精品普通话| 欧美最猛性xxxxx亚洲精品| 国产91在线高潮白浆在线观看| 国产精品久久激情| 精品伊人久久97| 国产精品扒开腿做爽爽爽男男| 国产精品黄页免费高清在线观看| 亚洲性猛交xxxxwww| 欧美精品一本久久男人的天堂| 91国产视频在线| 91av免费观看91av精品在线| 亚洲无限乱码一二三四麻| 97国产真实伦对白精彩视频8| 91亚洲国产成人精品性色| 欧美在线一区二区视频| 亚洲一区二区三区视频| 2019中文字幕免费视频| 国产精品国产福利国产秒拍| 欧美激情在线观看视频| 精品国产一区二区三区久久狼5月| 亚洲一区二区在线| 欧美激情奇米色| 欧美制服第一页| 亚洲天堂视频在线观看| 久久久久久999| 国产一区二区三区久久精品| 欧美大肥婆大肥bbbbb| 久久人人爽国产| 日本伊人精品一区二区三区介绍| 精品久久久香蕉免费精品视频| 国产欧亚日韩视频| 97人人爽人人喊人人模波多| 97不卡在线视频| 91久久在线观看| 国产精品视频播放| 国产精品视频在线播放| 日本精品免费一区二区三区| 久久中文字幕国产| 色偷偷88888欧美精品久久久| 日韩av综合网| 高清一区二区三区四区五区| 亚洲午夜未删减在线观看| 精品久久久久久久久中文字幕| 91亚洲精品视频| 国产精品免费一区豆花| 久久久久久久国产| 奇门遁甲1982国语版免费观看高清| 国产精品免费久久久久久| 国模精品视频一区二区| 亚洲а∨天堂久久精品喷水| 久久久久国产精品www| 国产视频999| 亚洲精品按摩视频| 夜夜嗨av色一区二区不卡| 黑人巨大精品欧美一区二区一视频| 日韩免费电影在线观看| 精品国产欧美一区二区五十路| 九九精品视频在线观看| 亚洲成人久久电影| 日韩在线播放一区| 欧美日韩国产精品一区| 97av视频在线| 亚洲美女性生活视频| 亚洲一级黄色av| 91久久综合亚洲鲁鲁五月天| 成人免费在线视频网站| 久久久中精品2020中文| 久久这里只有精品99| 国产精品三级久久久久久电影| 亚洲精品电影网|