成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析ASP.NET Forms驗證

開發 后端
本文介紹ASP.NET Forms驗證,一個屬性UserData,這個屬性可以由應用程序來寫入自定義的一些數據,我們可以利用這個字段來存放role的信息,從而達到基于角色驗證的目的。

ASP.NET Forms驗證,下面看一下授權的詳細過程:

1). 一旦一個用戶訪問這個網站,就行登錄確認了身份,身份驗證票的cookie也寫到了客戶端。之后,這個用戶再次申請這個web的頁面,身份驗證票的cookie就會發送到服務端。在服務端,ASP.NET為每一個http請求都分配一個HttpApplication對象來處理這個請求,在 HttpApplication.AuthenticateRequest事件后,安全模塊已建立用戶標識,就是此用戶的身份在web端已經建立起來,這個身份完全是由客戶端發送回來的身份驗證票的cookie建立的。

2). 用戶身份在HttpContext.User 屬性中,在頁面中可以通過Page.Context 來獲取同這個頁面相關的HttpContext對象。對于Forms驗證,HttpContext.User屬性是一個GenericPrincipal類型的對象,GenericPrincipal只有一個公開的屬性Identity,有個私有的m_role屬性,是string[]類型,存放此用戶是屬于哪些role的數組,還有一個公開的方法IsInRole(string role),來判斷此用戶是否屬于某個角色。
由于身份驗證票的cookie中根本沒有提供role屬性,就是說Forms身份驗證票沒有提供此用戶的role信息,所以,對于Forms驗證,在服務端得到的GenericPrincipal 用戶對象的m_role屬性永遠是空的。

3). GenericPrincipal. Identity 屬性是一個FormsIdentity類型的對象,這個對象有個Name屬性,就是此用戶的標示,訪問授權就是將此屬性做為user來進行授權驗證的。 FormsIdentity還有一個屬性,就是Ticket屬性,此屬性是身份驗證票FormsAuthenticationTicket類型,就是之前服務器寫到客戶端的身份驗證票。

服務器在獲取到身份驗證票FormsAuthenticationTicket對象后,查看這個身份驗證票是不是非持久的身份驗證,是的話要根據web.config中timeout屬性設置的有效期來更新這個身份驗證票的cookie(為避免危及性能,在經過了超過一半的指定時間后更新該 Cookie。這可能導致精確性上的損失。持久性 Cookie 不超時。)

4). 在HttpApplication.ResolveRequestCache事件之前,ASP.NET開始取得用戶請求的頁面,建立HttpHandler控制點。這就意味著,在HttpApplication.ResolveRequestCache事件要對用戶訪問權限就行驗證,看此用戶或角色是否有權限訪問這個頁面,之后在這個請求的生命周期內再改變此用戶的身份或角色就沒有意義了。

以上是ASP.NET Forms驗證的全過程,可以看出,這個ASP.NET Forms驗證是基于用戶的,沒有為角色的驗證提供直接支持。身份驗證票FormsAuthenticationTicket 中的Name屬性是用戶標示,其實還有一個屬性UserData,這個屬性可以由應用程序來寫入自定義的一些數據,我們可以利用這個字段來存放role的信息,從而達到基于角色驗證的目的。

  1. privatevoidButton1_Click(objectsender,System.EventArgse)  
  2. {  
  3. //實體類AdminUserVO對應AdminUser用戶表。  
  4. AdminUserVOadminUserVO=newAdminUserVO();  
  5.  
  6. adminUserVO.Uname=UserName.Text.Trim();  
  7. adminUserVO.Upwd=UserPwd.Text.Trim();  
  8. adminUserVO.LastIP=HttpContext.Current.Request.UserHostAddress;  
  9. adminUserVO.LastTime=DateTime.Now;  
  10.  
  11. boolflag=(newLoginDAO()).Chk(adminUserVO);  
  12.  
  13. if(flag)  
  14. {  
  15. //非角色驗證時可以用這句:  
  16. //System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text.Trim(),false);  
  17.  
  18. //創建角色驗證信息,把role信息寫入到UserData中  
  19. SetLoginCookie(adminUserVO,adminUserVO.Roles.ToLower());  
  20.  
  21. HttpContext.Current.Response.Redirect("Main.aspx");  
  22. }  
  23. else  
  24. {  
  25. HttpContext.Current.Response.Write("登錄失敗");  
  26. }  

【編輯推薦】

  1. ASP.NET開發技巧之Theme功能淺析
  2. 詳解ASP.NET動態編譯
  3. Apache支持ASP.NET方法淺析
  4. 淺談ASP.NET服務器標準控件
  5. ASP.NET中SQL Server數據庫備份恢復淺析
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-05 16:50:09

ASP.NET For

2009-07-29 09:59:10

ASP.NET For

2009-08-05 15:29:33

ASP.NET For

2009-07-27 17:25:53

ASP.NET驗證控件

2011-05-23 10:37:03

2009-08-04 15:20:59

ASP.NET數據驗證數據驗證控件

2012-04-16 09:54:26

2009-08-04 15:02:18

ASP.NET數據驗證

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET優點

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-08-04 17:41:10

ASP.NET數據驗證

2009-09-23 09:19:23

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-08-04 17:16:16

ASP.NET代碼優化

2009-07-24 18:02:46

ASP.NET編程

2009-08-05 16:53:14

ASP.NET組件設計

2009-08-10 14:55:43

ASP.NET htt
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www日日日 | 区一区二区三在线观看 | 在线观看免费av网 | 欧洲精品在线观看 | 欧美一区二区三区大片 | 亚洲大片在线观看 | 国产精品18hdxxxⅹ在线 | 在线中文视频 | 福利视频网站 | 欧美精品久久久久久久久久 | 国产一区二区 | 成人高潮片免费视频欧美 | 日本在线播放 | 欧美无乱码久久久免费午夜一区 | 精品免费 | 国产特黄一级 | 91一区二区| 国产精品美女久久久久aⅴ国产馆 | 老子午夜影院 | 色婷婷精品 | 日韩精品成人av | 精品啪啪 | 毛片一级片 | 日韩毛片免费视频 | 久久99精品国产 | 免费在线观看一区二区三区 | 91精品无人区卡一卡二卡三 | 久久国产精品一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 精品国产欧美日韩不卡在线观看 | 久久久这里只有17精品 | 在线观看国产wwwa级羞羞视频 | 久热久草| 中文字幕在线观 | 久久久久久国产精品mv | 国产精品色 | 中文字幕国产视频 | 久产久精国产品 | 国产精品一区一区 | 国产一区二区 | 国产精品久久久久久久免费观看 |