日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
淺談ASP.NETForms驗證

ASP.NET Forms驗證

專注于為中小企業(yè)提供成都網站設計、網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)惠東免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯網行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。

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

ASP.NET Forms驗證方式首先要配置的是web.config文件,把authentication節(jié)點配置為Forms驗證,而它默認的是Windows驗證。再修改配置文件時,還要注意大小寫,因為XML文件是大小寫敏感的,修改后authentication節(jié)點如下所示,其中還包含了一些form的配置參數。

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

關于forms節(jié)點的屬性在后面介紹FormsAuthetication類的有關成員時,再介紹它們的用處。用戶驗證,顧名思義就是驗證用戶的合理性,當用戶登錄到網站時,驗證輸入的用戶名和密碼是否和數據庫中存儲的數據相符合。其實很簡單,有一種快速的方法,這種驗證方法很適合后臺管理的驗證,因為當我們關閉瀏覽器時驗證就會失效。

 
 
 
  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;
  14. }

上面的方法就可以驗證以32位MD5加密的Password的數據驗證,其中Users.GetUser(string)這個方法是通過用戶名從數據庫中取得用戶實例。當用戶合理時,通過FormsAuthentication.SetAuthCookie方法將為用戶(以用戶名)創(chuàng)建一個身份驗證票證,并將其添加到響應的 Cookie 集合或 URL(cookieless)。這樣就實現了用戶驗證的過程,那么我們怎么得到用戶是否通過驗證呢?微軟把程序不斷的進行封裝,不斷的傻瓜化,當然想得到當前用戶是否通過驗證也很簡單,代碼如下:

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

是不是很簡單呢?當用戶(只要后臺管理驗證的情況下)驗證只要這兩個步驟就OK了,當用戶登錄如調用ValidUser方法,當載入頁面時通過 IsAuthenticated方法判斷當前用戶是否通過驗證。這樣一個用戶驗證模塊也就完成了,但是在現代的網絡中,用戶是相當的值錢的東東,每個網站都會想留住很多的用戶;有時有些東西只允許會員才能夠查看等等,這樣就需要更好的驗證。使用戶關閉瀏覽器后,在一段特定時間內還處于通過驗證狀態(tài)。這就需要操作和設置驗證的票據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;
  26. }

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

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

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


當前名稱:淺談ASP.NETForms驗證
分享URL:http://www.5511xx.com/article/cohgshh.html