偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺析ASP.NET Forms驗(yàn)證

開(kāi)發(fā) 后端
本文介紹ASP.NET Forms驗(yàn)證,一個(gè)屬性UserData,這個(gè)屬性可以由應(yīng)用程序來(lái)寫(xiě)入自定義的一些數(shù)據(jù),我們可以利用這個(gè)字段來(lái)存放role的信息,從而達(dá)到基于角色驗(yàn)證的目的。

ASP.NET Forms驗(yàn)證,下面看一下授權(quán)的詳細(xì)過(guò)程:

1). 一旦一個(gè)用戶(hù)訪(fǎng)問(wèn)這個(gè)網(wǎng)站,就行登錄確認(rèn)了身份,身份驗(yàn)證票的cookie也寫(xiě)到了客戶(hù)端。之后,這個(gè)用戶(hù)再次申請(qǐng)這個(gè)web的頁(yè)面,身份驗(yàn)證票的cookie就會(huì)發(fā)送到服務(wù)端。在服務(wù)端,ASP.NET為每一個(gè)http請(qǐng)求都分配一個(gè)HttpApplication對(duì)象來(lái)處理這個(gè)請(qǐng)求,在 HttpApplication.AuthenticateRequest事件后,安全模塊已建立用戶(hù)標(biāo)識(shí),就是此用戶(hù)的身份在web端已經(jīng)建立起來(lái),這個(gè)身份完全是由客戶(hù)端發(fā)送回來(lái)的身份驗(yàn)證票的cookie建立的。

2). 用戶(hù)身份在HttpContext.User 屬性中,在頁(yè)面中可以通過(guò)Page.Context 來(lái)獲取同這個(gè)頁(yè)面相關(guān)的HttpContext對(duì)象。對(duì)于Forms驗(yàn)證,HttpContext.User屬性是一個(gè)GenericPrincipal類(lèi)型的對(duì)象,GenericPrincipal只有一個(gè)公開(kāi)的屬性Identity,有個(gè)私有的m_role屬性,是string[]類(lèi)型,存放此用戶(hù)是屬于哪些role的數(shù)組,還有一個(gè)公開(kāi)的方法IsInRole(string role),來(lái)判斷此用戶(hù)是否屬于某個(gè)角色。
由于身份驗(yàn)證票的cookie中根本沒(méi)有提供role這個(gè)屬性,就是說(shuō)Forms身份驗(yàn)證票沒(méi)有提供此用戶(hù)的role信息,所以,對(duì)于Forms驗(yàn)證,在服務(wù)端得到的GenericPrincipal 用戶(hù)對(duì)象的m_role屬性永遠(yuǎn)是空的。

3). GenericPrincipal. Identity 屬性是一個(gè)FormsIdentity類(lèi)型的對(duì)象,這個(gè)對(duì)象有個(gè)Name屬性,就是此用戶(hù)的標(biāo)示,訪(fǎng)問(wèn)授權(quán)就是將此屬性做為user來(lái)進(jìn)行授權(quán)驗(yàn)證的。 FormsIdentity還有一個(gè)屬性,就是Ticket屬性,此屬性是身份驗(yàn)證票FormsAuthenticationTicket類(lèi)型,就是之前服務(wù)器寫(xiě)到客戶(hù)端的身份驗(yàn)證票。
服務(wù)器在獲取到身份驗(yàn)證票FormsAuthenticationTicket對(duì)象后,查看這個(gè)身份驗(yàn)證票是不是非持久的身份驗(yàn)證,是的話(huà)要根據(jù)web.config中timeout屬性設(shè)置的有效期來(lái)更新這個(gè)身份驗(yàn)證票的cookie(為避免危及性能,在經(jīng)過(guò)了超過(guò)一半的指定時(shí)間后更新該 Cookie。這可能導(dǎo)致精確性上的損失。持久性 Cookie 不超時(shí)。)

4). 在HttpApplication.ResolveRequestCache事件之前,ASP.NET開(kāi)始取得用戶(hù)請(qǐng)求的頁(yè)面,建立HttpHandler控制點(diǎn)。這就意味著,在HttpApplication.ResolveRequestCache事件要對(duì)用戶(hù)訪(fǎng)問(wèn)權(quán)限就行驗(yàn)證,看此用戶(hù)或角色是否有權(quán)限訪(fǎng)問(wèn)這個(gè)頁(yè)面,之后在這個(gè)請(qǐng)求的生命周期內(nèi)再改變此用戶(hù)的身份或角色就沒(méi)有意義了。

以上是ASP.NET Forms驗(yàn)證的過(guò)程,可以看出,這個(gè)ASP.NET Forms驗(yàn)證是基于用戶(hù)的,沒(méi)有為角色的驗(yàn)證提供直接支持。身份驗(yàn)證票FormsAuthenticationTicket 中的Name屬性是用戶(hù)標(biāo)示,其實(shí)還有一個(gè)屬性UserData,這個(gè)屬性可以由應(yīng)用程序來(lái)寫(xiě)入自定義的一些數(shù)據(jù),我們可以利用這個(gè)字段來(lái)存放role的信息,從而達(dá)到基于角色驗(yàn)證的目的。

  1. privatevoidButton1_Click(objectsender,System.EventArgse)  
  2. {  
  3. //實(shí)體類(lèi)AdminUserVO對(duì)應(yīng)AdminUser用戶(hù)表。  
  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. //非角色驗(yàn)證時(shí)可以用這句:  
  16. //System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text.Trim(),false);  
  17.  
  18. //創(chuàng)建角色驗(yàn)證信息,把role信息寫(xiě)入到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開(kāi)發(fā)技巧之Theme功能淺析
  2. 詳解ASP.NET動(dòng)態(tài)編譯
  3. Apache支持ASP.NET方法淺析
  4. 淺談ASP.NET服務(wù)器標(biāo)準(zhǔn)控件
  5. ASP.NET中SQL Server數(shù)據(jù)庫(kù)備份恢復(fù)淺析
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2009-08-05 16:17:29

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驗(yàn)證控件

2011-05-23 10:37:03

2009-08-04 15:20:59

ASP.NET數(shù)據(jù)驗(yàn)證數(shù)據(jù)驗(yàn)證控件

2012-04-16 09:54:26

2009-08-04 15:02:18

ASP.NET數(shù)據(jù)驗(yàn)證

2009-08-05 15:50:13

ASP.NET優(yōu)點(diǎn)

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-08-04 17:41:10

ASP.NET數(shù)據(jù)驗(yàn)證

2009-07-28 15:53:43

ASP.NET Web

2009-07-28 16:40:11

ASP.NET異步頁(yè)面

2009-08-04 17:00:09

ASP.NET禁用Vi

2009-07-23 14:31:20

ASP.NET MVC

2009-07-20 16:23:01

ASP.NET授權(quán)模塊

2009-08-05 14:46:17

ASP.NET url
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)