日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FormsAuthenticationTicket基于forms的验证

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FormsAuthenticationTicket基于forms的验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構建基于forms的驗證機制過程如下:
 1,設置IIS為可匿名訪問和asp.net web.config中設置為form驗證
 2,檢索數據存儲驗證用戶,并檢索角色(如果不是基于角色可不用)
 3,使用FormsAuthenticationTicket創建一個Cookie并回發到客戶端,并存儲
  角色到票據中,如:
  FormsAuthentication.SetAuthCookie(Username,true | false)
  cookies保存時間:
  HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)
 
  如果需要存儲角色,采用:
 FormsAuthenticationTicket authTicket = new
 FormsAuthenticationTicket(
  1, // 版本號。
  txtUserName.Text, // 與身份驗證票關聯的用戶名。
  DateTime.Now, // Cookie 的發出時間。
  DateTime.Now.AddMinutes(20),// Cookie 的到期日期。
  false, // 如果 Cookie 是持久的,為 true;否則為 false。
  roles ); // 將存儲在 Cookie 中的用戶定義數據。
  roles是一個角色字符串數組
  string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密
 
  存入Cookie
  HttpCookie authCookie =
  new HttpCookie(FormsAuthentication.FormsCookieName,
  encryptedTicket);
 
  Response.Cookies.Add(authCookie);
 
 4,在Application_AuthenticateRequest事件中處理程序中(Global.asax)中,使用
  票創建IPrincipal對象并存在HttpContext.User中
  代碼:
  HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
  FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);//解密
  string[] roles = authTicket.UserData.Split(new char[]{';'});//根據存入時的格式分解,;或|....
  Context.User = new GenericPrincipal(Context.User.Identity, Roles);//存到HttpContext.User中
 
 判斷某個角色驗證
 HttpContext.Current.User.IsInRole(roles)
 具體實現
 
 Web.config文件
 加入節點,name為COOKIE名稱,loginUrl為沒有通過驗證跳轉的地址
 <system.web>
  <authentication mode="Forms">
  <forms name="Hstear"
 loginUrl="login.aspx" protection="All" path="/" timeout="40"/>
  </authentication>
 </system.web>
 設置目錄訪問 path為目錄名,roles為票據中的角色名
 發現網上的都說要單獨一個WEB.CONFIG文件放在目錄中,但實際在根目錄中設置即可,單個文件也一樣
 <location path="Admin">
  <system.web>
  <authorization>
  <allow roles="admin"/>
  <deny users="*"/>
  </authorization>
  </system.web>
 </location>
 Global.asax文件
 Application_AuthenticateRequest事件中加入
  protected void Application_AuthenticateRequest(Object sender, EventArgs e)   {  string cookieName = FormsAuthentication.FormsCookieName;  HttpCookie authCookie = Context.Request.Cookies[cookieName];  FormsAuthenticationTicket authTicket = null;  try  {   authTicket = FormsAuthentication.Decrypt(authCookie.Value);  }  catch(Exception ex)  {   return;  }    string[] roles = authTicket.UserData.Split(new char[]{','});//如果存取多個角色,我們把它分解    FormsIdentity id = new FormsIdentity( authTicket );    GenericPrincipal principal = new GenericPrincipal(id, roles);  Context.User =principal;//存到HttpContext.User中     }  
 原理,將用戶角色信息保存在票據中,通過Global.asax,WEB.CONFIG中的設置,判斷角色的權限

轉載于:https://www.cnblogs.com/mybluesky99/archive/2011/06/14/2080493.html

總結

以上是生活随笔為你收集整理的FormsAuthenticationTicket基于forms的验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。