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

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

開(kāi)發(fā) 后端
本文介紹ASP.NET Forms驗(yàn)證,當(dāng)然用戶也可以自定義與驗(yàn)證方法,而最常用的莫過(guò)于Forms驗(yàn)證,這也是今天所要討論的驗(yàn)證方式。

ASP.NET Forms驗(yàn)證

用戶驗(yàn)證是每一個(gè)項(xiàng)目必須的一個(gè)模塊,由于已經(jīng)很久沒(méi)有碰到這一塊內(nèi)容,今天寫一個(gè)用戶驗(yàn)證居然腦子一片空白。于是乎就和一個(gè)同事進(jìn)行了一片討論,晚上回家決定把討論的結(jié)果給記錄下來(lái),以備后來(lái)之需。在ASP.NET中有幾種用戶驗(yàn)證的方法:Windows驗(yàn)證,F(xiàn)orms驗(yàn)證和Passport驗(yàn)證。當(dāng)然用戶也可以自定義與驗(yàn)證方法,而最常用的莫過(guò)于Forms驗(yàn)證,這也是今天所要討論的驗(yàn)證方式。

ASP.NET Forms驗(yàn)證方式首先要配置的是web.config文件,把a(bǔ)uthentication節(jié)點(diǎn)配置為Forms驗(yàn)證,而它默認(rèn)的是Windows驗(yàn)證。再修改配置文件時(shí),還要注意大小寫,因?yàn)閄ML文件是大小寫敏感的,修改后authentication節(jié)點(diǎn)如下所示,其中還包含了一些form的配置參數(shù)。

  1. <authenticationmodeauthenticationmode="Forms"> 
  2. <forms 
  3. protection="All" 
  4. timeout="20" 
  5. name=".XDOTNET" 
  6. loginUrl="SignIn.aspx" 
  7. defaultUrl="Default.aspx" 
  8. path="/" 
  9. requireSSL="false" 
  10. enableCrossAppRedirects="false" 
  11. > 
  12. </forms> 
  13. </authentication> 

關(guān)于forms節(jié)點(diǎn)的屬性在后面介紹FormsAuthetication類的有關(guān)成員時(shí),再介紹它們的用處。用戶驗(yàn)證,顧名思義就是驗(yàn)證用戶的合理性,當(dāng)用戶登錄到網(wǎng)站時(shí),驗(yàn)證輸入的用戶名和密碼是否和數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)相符合。其實(shí)很簡(jiǎn)單,有一種快速的方法,這種驗(yàn)證方法很適合后臺(tái)管理的驗(yàn)證,因?yàn)楫?dāng)我們關(guān)閉瀏覽器時(shí)驗(yàn)證就會(huì)失效。

  1. publicstaticboolValidUser(stringuserName,stringpassword)  
  2. {  
  3. if(!string.IsNullOrEmpty(userName)&&!string.IsNullOrEmpty(password))  
  4. {  
  5. password=FormsAuthentication.HashPasswordForStoringInConfigFile(password,"MD5");  
  6. stringrealPassword=Users.GetUser(userName).Password;  
  7. if(string.Compare(password,realPassword,true)==0)  
  8. {  
  9. FormsAuthentication.SetAuthCookie(userName,false);  
  10. returntrue;  
  11. }  
  12. }  
  13. returnfalse;  

上面的方法就可以驗(yàn)證以32位MD5加密的Password的數(shù)據(jù)驗(yàn)證,其中Users.GetUser(string)這個(gè)方法是通過(guò)用戶名從數(shù)據(jù)庫(kù)中取得用戶實(shí)例。當(dāng)用戶合理時(shí),通過(guò)FormsAuthentication.SetAuthCookie方法將為用戶(以用戶名)創(chuàng)建一個(gè)身份驗(yàn)證票證,并將其添加到響應(yīng)的 Cookie 集合或 URL(cookieless)。這樣就實(shí)現(xiàn)了用戶驗(yàn)證的過(guò)程,那么我們?cè)趺吹玫接脩羰欠裢ㄟ^(guò)驗(yàn)證呢?微軟把程序不斷的進(jìn)行封裝,不斷的傻瓜化,當(dāng)然想得到當(dāng)前用戶是否通過(guò)驗(yàn)證也很簡(jiǎn)單,代碼如下:

  1. public static bool IsAuthenticated()   
  2. {  
  3. return HttpContext.Current.User.Identity.IsAuthenticated;  


是不是很簡(jiǎn)單呢?當(dāng)用戶(只要后臺(tái)管理驗(yàn)證的情況下)驗(yàn)證只要這兩個(gè)步驟就OK了,當(dāng)用戶登錄如調(diào)用ValidUser方法,當(dāng)載入頁(yè)面時(shí)通過(guò) IsAuthenticated方法判斷當(dāng)前用戶是否通過(guò)驗(yàn)證。這樣一個(gè)用戶驗(yàn)證模塊也就完成了,但是在現(xiàn)代的網(wǎng)絡(luò)中,用戶是相當(dāng)?shù)闹靛X的東東,每個(gè)網(wǎng)站都會(huì)想留住很多的用戶;有時(shí)有些東西只允許會(huì)員才能夠查看等等,這樣就需要更好的驗(yàn)證。使用戶關(guān)閉瀏覽器后,在一段特定時(shí)間內(nèi)還處于通過(guò)驗(yàn)證狀態(tài)。這就需要操作和設(shè)置驗(yàn)證的票據(jù)FormsAuthenticationTicket,代碼如下:

  1. public static bool ValidUser(string userName, string password)   
  2. {  
  3. if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))   
  4. {  
  5. password = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");  
  6. string realPassword = Users.GetUser(userName).Password;  
  7. if (string.Compare(password, realPassword, true) == 0)   
  8. {  
  9. FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,  
  10. userName,  
  11. DateTime.Now,  
  12. DateTime.Now.AddMinutes(20),  
  13. false,  
  14. null//可以將Roles按","分割成字符串,寫入cookie  
  15. );  
  16. string data = FormsAuthentication.Encrypt(ticket);  
  17. HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, data);  
  18. cookie.Path = FormsAuthentication.FormsCookiePath;  
  19. cookie.Domain = FormsAuthentication.CookieDomain;  
  20. cookie.Expires = ticket.Expiration;  
  21. HttpContext.Current.Response.Cookies.Add(cookie);  
  22. return true;  
  23. }  
  24. }  
  25. return false;  

從代碼中看到的FormsCookiePath,CookieDomain等等就是從配置文件中獲得,關(guān)于其它的FormsAuthentication成員可以訪問(wèn)MSDN(FormsAuthentication)。我們同樣也可以通過(guò)HttpContext.Current.User對(duì)象來(lái)判斷當(dāng)前用戶的狀況,也可以用IsInRole方法來(lái)判斷用戶的角色。當(dāng)然當(dāng)我們驗(yàn)證用戶后,要把用戶加入到Http上下文HttpContext的當(dāng)前請(qǐng)求的User對(duì)象中,代碼如下:

  1. FormsIdentity identity = new FormsIdentity(ticket);  
  2. GenericPrincipal user = new GenericPrincipal(identity, new string[] { });  
  3. HttpContext.Current.User = user

這樣就完成了ASP.NET Forms驗(yàn)證的全過(guò)程。至于查看用戶的Cookie判斷用戶是否存在記錄狀態(tài)(如:記錄1個(gè)月,1天,1年等等),可以在管道中進(jìn)行判斷和編寫,這里就不再贅述。OK,由于時(shí)間的關(guān)系,就記錄這些,如果有什么錯(cuò)誤或更好的方法請(qǐng)大家指出,謝謝。

【編輯推薦】

  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)源: cnblogs
相關(guān)推薦

2009-07-29 09:59:10

ASP.NET For

2009-08-05 16:17:29

ASP.NET For

2009-08-05 16:50:09

ASP.NET For

2011-05-23 10:37:03

2012-04-16 09:54:26

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-24 10:52:42

ASP.NET ISA

2009-09-23 09:19:23

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2011-08-23 10:58:59

2009-07-23 15:24:37

ASP.NET Ima

2009-07-27 16:19:59

ASP.NET報(bào)表控件

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-07-20 17:12:17

ASP.NET訪問(wèn)數(shù)據(jù)

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-08-10 10:19:47

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

2009-07-27 17:25:53

ASP.NET驗(yàn)證控件
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欲色av| 国产区视频在线观看 | 亚洲经典一区 | h视频在线观看免费 | 欧美午夜视频 | 日韩精品无码一区二区三区 | 日日夜夜视频 | 日韩三级电影一区二区 | 男女啪啪高潮无遮挡免费动态 | av在线黄| 亚洲电影成人 | 国产精品夜夜夜一区二区三区尤 | 中文字幕第十一页 | 欧美综合一区 | 中文字幕在线观看成人 | 国产三级国产精品 | 国产精品日日夜夜 | 成人h视频在线观看 | 国产成人精品一区二区三区四区 | 精品一区国产 | 伊人网综合在线观看 | 欧美精选一区二区 | 精品久久久久一区二区国产 | 毛片一级片 | 国产亚洲一区二区三区在线 | 精品国产1区2区3区 一区二区手机在线 | 欧美综合一区二区 | av大全在线观看 | 国产高清精品一区二区三区 | 欧美日韩亚洲三区 | 亚洲一区中文字幕 | 日韩伦理电影免费在线观看 | 亚洲一区二区免费视频 | 久久精品国产亚洲一区二区 | 天天操夜夜操 | 久久不卡| 97人人澡人人爽91综合色 | 久久久精品网站 | 精品国产一区二区三区久久久四川 | 综合久久国产 | 特黄小视频 |