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

首頁 > 編程 > .NET > 正文

Asp.net mvc 權限過濾和單點登錄(禁止重復登錄)

2024-07-10 13:31:45
字體:
來源:轉載
供稿:網友

1.權限控制使用controller和 action來實現,權限方式有很多種,最近開發項目使用控制控制器方式實現代碼如下

/// <summary>/// 用戶權限控制/// </summary>public class UserAuthorize : AuthorizeAttribute{  /// <summary>  /// 授權失敗時呈現的視圖  /// </summary>  public string AuthorizationFailView { get; set; }  /// <summary>  /// 請求授權時執行  /// </summary>  /// <param name="filterContext">上下文</param>  public override void OnAuthorization(AuthorizationContext filterContext)  {    // 獲取url請求里的 controller 和 action    string controllerName = filterContext.RouteData.Values["controller"].ToString();    string actionName = filterContext.RouteData.Values["action"].ToString();    // 獲取用戶信息    UserLoginBaseInfo _userLoginInfo = filterContext.HttpContext.Session[Property.UerLoginSession] as UserLoginBaseInfo;    //根據請求過來的controller和action去查詢可以被哪些角色操作: 這是查詢數據庫 roleid使用 1,2,3,4格式    RoleWithControllerAction roleWithControllerAction =      SampleData.roleWithControllerAndAction.FirstOrDefault(r => r.ControllerName.ToLower() == controllerName.ToLower() && r.ActionName.ToLower() == actionName.ToLower() && r.RoleIds.contails("3"));    // 有值處理    if (roleWithControllerAction != null)    {      //有權限操作當前控制器和Action的角色id      this.Roles = roleWithControllerAction.RoleIds;    }    else    {      //請求失敗輸出空結果      filterContext.Result = new EmptyResult();      //打出提示文字      HttpContext.Current.Response.Write("對不起,你沒有權限操作!");    }    base.OnAuthorization(filterContext);  }  /// <summary>  /// 自定義授權檢查(返回False則授權失?。? /// </summary>  protected override bool AuthorizeCore(HttpContextBase httpContext)  {    //if (httpContext.User.Identity.IsAuthenticated)    //{    //  string userName = httpContext.User.Identity.Name;  //當前登錄用戶的用戶名    //  User user = SampleData.users.Find(u => u.UserName == userName);  //當前登錄用戶對象    //  if (user != null)    //  {    //    Role role = SampleData.roles.Find(r => r.Id == user.RoleId); //當前登錄用戶的角色    //    foreach (string roleid in Roles.Split(','))    //    {    //      if (role.Id.ToString() == roleid)    //        return true;    //    }    //    return false;    //  }    //  else    //    return false;    //}    //else    //  return false;   //進入HandleUnauthorizedRequest    return true;  }  /// <summary>  /// 處理授權失敗的HTTP請求  /// </summary>  protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)  {    if (string.IsNullOrWhiteSpace(AuthorizationFailView))      AuthorizationFailView = "error";    filterContext.Result = new ViewResult { ViewName = AuthorizationFailView };  }}

 二.單點登錄方式使用application方式來實現

  1.用戶登錄成功后記錄當前信息

/// <summary>/// 限制一個用戶只能登陸一次/// </summary>/// <returns></returns>private void GetOnline(){  string UserID = "1";  Hashtable SingleOnline = (Hashtable)System.Web.HttpContext.Current.Application[Property.Online];  if (SingleOnline == null)    SingleOnline = new Hashtable();  IDictionaryEnumerator idE = SingleOnline.GetEnumerator();  string strKey = string.Empty;  while (idE.MoveNext())  {    if (idE.Value != null && idE.Value.ToString().Equals(UserID))    {      //already login       strKey = idE.Key.ToString();      //當前用戶已存在移除、      SingleOnline.Remove(strKey);      System.Web.HttpContext.Current.Application.Lock();      System.Web.HttpContext.Current.Application[Property.Online] = SingleOnline;      System.Web.HttpContext.Current.Application.UnLock();      break;    }  }  //SessionID  if (!SingleOnline.ContainsKey(Session.SessionID))  {    SingleOnline[Session.SessionID] = UserID;    System.Web.HttpContext.Current.Application.Lock();    System.Web.HttpContext.Current.Application[Property.Online] = SingleOnline;    System.Web.HttpContext.Current.Application.UnLock();  }}

 2.使用ActionFilter來實現單點登錄,每次點擊控制器都去查詢過濾是否在其它地方登錄

/// <summary> /// 用戶基礎信息過濾器 /// </summary> public class LoginActionFilter : ActionFilterAttribute {   /// <summary>   /// 初始化地址   /// </summary>   public const string Url = "~/Login/Index?error=";   /// <summary>   /// 該方法會在action方法執行之前調用    /// </summary>   /// <param name="filterContext">上下文</param>   public override void OnActionExecuting(ActionExecutingContext filterContext)   {     // 獲取上一級url     // var url1 = filterContext.HttpContext.Request.UrlReferrer;     UserLoginBaseInfo _userLogin = filterContext.HttpContext.Session[Property.UerLoginSession] as UserLoginBaseInfo;     // 用戶是否登陸     if (_userLogin == null)     {       filterContext.Result = new RedirectResult(Url + "登陸時間過期,請重新登陸!&url=" + filterContext.HttpContext.Request.RawUrl);     }     else     {       filterContext.HttpContext.Session.Timeout = 30;     }     //判斷是否在其它地方登錄     Hashtable singleOnline = (Hashtable)System.Web.HttpContext.Current.Application[Property.Online];     // 判斷當前SessionID是否存在     if (singleOnline != null && !singleOnline.ContainsKey(HttpContext.Current.Session.SessionID))       filterContext.Result = new RedirectResult(Url + "你的帳號已在別處登陸,你被強迫下線!");     base.OnActionExecuting(filterContext);   }   /// <summary>   /// 執行后   /// </summary>   /// <param name="filterContext"></param>   public override void OnResultExecuting(ResultExecutingContext filterContext)   {     //記錄操作日志,寫進操作日志中     var controllerName = filterContext.RouteData.Values["controller"];     var actionName = filterContext.RouteData.Values["action"];     base.OnResultExecuting(filterContext);   }

 3.用戶正常退出或則非正常退出處理當前用戶信息銷毀Session

/// <summary>/// Session銷毀/// </summary>protected void Session_End(){  Hashtable SingleOnline = (Hashtable)Application[Property.Online];  if (SingleOnline != null && SingleOnline[Session.SessionID] != null)  {    SingleOnline.Remove(Session.SessionID);    Application.Lock();    Application[Property.Online] = SingleOnline;    Application.UnLock();  }  Session.Abandon();}

以上所述是小編給大家介紹的Asp.net mvc 權限過濾和單點登錄(禁止重復登錄),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久日韩精品久久久男男| 91精品视频网站| 深夜福利国产精品| 亚洲乱码一区av黑人高潮| 国产精品久久久久久久久粉嫩av| 亚洲国产另类 国产精品国产免费| 中文字幕亚洲欧美日韩在线不卡| 亚洲欧美综合图区| 久久久av电影| 色综合伊人色综合网站| 亚洲乱码一区二区| 国产欧美在线视频| 国产精品永久免费观看| 欧美激情欧美激情| 亚洲男人第一av网站| 中文字幕欧美在线| 欧美精品久久久久a| 亚洲欧美日韩爽爽影院| 欧美日韩亚洲视频一区| 91亚洲精品一区| 成人黄色免费在线观看| 亚洲第一页自拍| 久久视频在线观看免费| 亚洲一区二区国产| 一本大道亚洲视频| 高清一区二区三区四区五区| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕在线看视频国产欧美在线看完整| 欧美午夜激情小视频| 色哟哟入口国产精品| 色婷婷综合成人| 欧美性xxxxxxx| 日韩av免费在线播放| www.欧美免费| 欧美性猛交xxxx久久久| 韩国三级电影久久久久久| 久久久av网站| 日韩午夜在线视频| 欧美高清无遮挡| 亚洲国产精品电影在线观看| 日韩av一区在线| 国产精品自产拍在线观| 91久久久亚洲精品| 欧美国产激情18| 一本色道久久综合狠狠躁篇的优点| 国产视频精品一区二区三区| 91精品久久久久久久久久另类| 欧美激情视频一区| 亚洲伊人成综合成人网| 欧美巨猛xxxx猛交黑人97人| 疯狂欧美牲乱大交777| 国产精品美女主播在线观看纯欲| 在线看国产精品| 成人黄色av播放免费| 最近2019年中文视频免费在线观看| 亚洲精品免费网站| 久久久久久国产| 国产99久久精品一区二区永久免费| 久久久亚洲欧洲日产国码aⅴ| 91欧美视频网站| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品国产精品国自产在线| www.日韩不卡电影av| 视频在线一区二区| 久久久亚洲欧洲日产国码aⅴ| 欧美在线视频一二三| 中文字幕少妇一区二区三区| 亚洲第一精品夜夜躁人人躁| 美日韩精品视频免费看| 国产在线视频2019最新视频| 国产欧美日韩中文字幕在线| 欧美日韩国产黄| 中文字幕日韩在线观看| 国产精品久久久久秋霞鲁丝| 欧美成人在线免费视频| 久久久精品999| 午夜精品一区二区三区在线视频| 91精品中文在线| 国色天香2019中文字幕在线观看| 欧美一级电影免费在线观看| 国产精品视频久久| 色中色综合影院手机版在线观看| 国产成人精品日本亚洲| 日韩av片免费在线观看| 亚洲人成电影在线播放| 日韩美女视频在线观看| 国产69精品久久久久久| 欧美另类极品videosbest最新版本| 亚洲一区二区在线播放| 亚洲在线一区二区| 欧美一级电影久久| 日韩欧美在线字幕| 亚洲一区精品电影| 欧美老女人性视频| 国产一区二区欧美日韩| 自拍偷拍亚洲一区| 操人视频在线观看欧美| 国产主播欧美精品| 91精品久久久久久久久久久| 国产成人高清激情视频在线观看| 久久中文字幕在线| 青青久久av北条麻妃海外网| 欧美一级淫片丝袜脚交| 日韩男女性生活视频| 欧美亚洲视频在线观看| 国产精品jizz在线观看麻豆| 中国人与牲禽动交精品| 国产日本欧美一区二区三区在线| 精品久久久久久久久国产字幕| 欧美有码在线观看视频| 尤物99国产成人精品视频| 51午夜精品视频| 91国产中文字幕| 欧美性生交大片免费| 91大神在线播放精品| 国内精品美女av在线播放| 国内精品小视频在线观看| 亚洲欧美日韩一区二区三区在线| 91sa在线看| 国产精品第100页| 国产成人精品久久二区二区| 久久艳片www.17c.com| 欧美激情在线一区| 91久久中文字幕| 欧美中在线观看| 国产精品白嫩美女在线观看| 伦理中文字幕亚洲| 日本韩国欧美精品大片卡二| 久久精品国产免费观看| 麻豆乱码国产一区二区三区| 亚洲嫩模很污视频| 亚洲自拍偷拍视频| 国产精品视频公开费视频| 欧美日韩国产精品一区二区三区四区| 亚洲一区二区三区乱码aⅴ| 国产精品久久视频| 色妞色视频一区二区三区四区| 中文字幕综合一区| 欧美专区国产专区| 国产精品久久久久久久久免费看| 亚洲电影在线观看| 91高潮在线观看| 日韩美女免费观看| 成人国产精品色哟哟| 日日狠狠久久偷偷四色综合免费| 美女扒开尿口让男人操亚洲视频网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产极品jizzhd欧美| 精品久久久国产精品999| 日韩精品免费看| 成人免费观看网址| 91亚洲国产精品| 国产精品久久久久久久久久小说| 91美女福利视频高清| 久久亚洲影音av资源网| 国产精品久久久久久亚洲影视| 日韩中文字幕不卡视频| 欧美激情免费在线| 亚洲欧美另类中文字幕| 91久久精品国产91久久| 日本最新高清不卡中文字幕| 日韩av网址在线观看| 日韩高清免费观看| 亚洲大胆人体在线|