ASP.NET身份驗證機制membership入門——API篇

轉載出自:http://www.cnblogs.com/xlb2000/archive/2010/07/23/1780824.html
 

  不知道什麼緣由,最近老是頭暈腦脹,作什麼事情感受都不在狀態,再加上工做忙,以爲好累~不過無論怎麼說,寫博客必定要堅持,最少一月一篇~這算是給本身的任務吧。html

  回到正題,前面說過如何去配置Membership,以及如何去使用Asp.net自帶的登錄控件。此次說明一下如何不使用Asp.net自帶的登錄控件,而經過編寫代碼的方式去完成相應的功能。web

  要使用Membership咱們須要引入System.Web.Security這個命名空間。在這個命名空間中有這麼幾個經常使用的類:算法

  1. Membership
  2. Roles

 

  首先來介紹第一個Membership類,Membership類是一個靜態類,提供了全部的對於用戶方面的操做,好比註冊用戶,刪除用戶,取得用戶列表,根據email查找用戶等等app

  方法不少,可是大多數都很簡單,咱們挑兩個比較麻煩點的來詳細解釋一下:ide

  Membership.CreateUser方法的功能,看名字就知道是建立用戶,這個方法有4個重載:post

 

複製代碼
public   static  MembershipUser CreateUser( string  username,  string  password);

public   static  MembershipUser CreateUser( string  username,  string  password,  string  email);

public   static  MembershipUser CreateUser( string  username,  string  password,  string  email,  string  passwordQuestion,  string  passwordAnswer,  bool  isApproved,  out  MembershipCreateStatus status);

public   static  MembershipUser CreateUser( string  username,  string  password,  string  email,  string  passwordQuestion,  string  passwordAnswer,  bool  isApproved,  object  providerUserKey,  out  MembershipCreateStatus status);
複製代碼

 

  這4個重載的返回值都是MembershipUser類,MembershipUser類其實就是一個實體類,不過裏邊帶了一些方法,好比取得密碼,修改密碼等方法。至於該使用哪一個重載,還記得前面的web.config配置麼?好比requiresQuestionAndAnswer設置是否須要密碼找回問題和答案,若是該設置爲true,那麼就得使用第三個,或者第四個重載,提供問題和答案了。isApproved這個參數表示建立的用戶是否激活。最後一個MembershipCreateStatus 是一個枚舉,用out關鍵字修飾,用來得到建立用戶的狀態,好比:MembershipCreateStatus.Success說明建立用戶成功,MembershipCreateStatus.InvalidEmail說明電子郵件的格式錯誤等等。providerUserKey是一個Guid類型的數據,用來指定該用戶的UserId。ui

 

  另外一個須要介紹的就是public static bool ValidateUser(string username, string password);這個方法,其實看名字和參數你們都應該猜到這個方法的做用了,兩個參數分別是用戶名和密碼,返回值爲是否登陸成功。剩下的方法都很是 的簡單了。你們應該一看就明白,不過須要提一下的是:ValidateUser方法常常和FormsAuthentication類配合起來使 用,FormsAuthentication類提供了一系列靜態方法,用來管理Forms身份驗證服務。url

  FormsAuthentication類中,經常使用方法有:spa

public   static   string  HashPasswordForStoringInConfigFile( string  password,  string  passwordFormat);
public static void SetAuthCookie(string userName, bool createPersistentCookie);
public   static   void  RedirectFromLoginPage( string  userName,  bool  createPersistentCookie);

 

  第一個HashPasswordForStoringInConfigFile方法,做用很簡單,將傳入的password按照 passwordFormat指定的哈希算法生成哈希密碼而後返回,passwordFormat的取值能夠是"MD5」或是"SHA1"這兩個選擇。.net

  第二個SetAuthCookie方法,向客戶端發送身份驗證的票據。userName是登錄的用戶名,createPersistentCookie用來告訴Asp.net是否建立一個持久的Cookie,讓用戶下次訪問可以免於登錄。

  第三個RedirectFormLoginPage方法,將通過身份驗證的用戶重定向回最初請求的 URL 或默認 URL。

  一般就是這樣的用法:

 

if  (Membership.ValidateUser( " zhangsan " " 123123 " ))
{
    FormsAuthentication.RedirectFromLoginPage(
" zhangsan " false );
}

 

 

  Roles類一樣是一個靜態類,裏邊封裝了全部對於角色相關的方法。好比:建立角色、將用戶添加到角色,刪除角色等經常使用操做。使用Roles類 要注意:web.config配置中roleManager節必須正確配置,而且enabled屬性必須等於true纔可使用。

  Roles類中,須要說一下的是AddUserToRole這個方法,這個方法一般和Membership.CreateUser在一塊兒使用,好比:

if  (Membership.CreateUser( " zhangsan " " 123123 " ))
{
    
// 建立用戶成功,給zhangsan分配User角色
    Roles.AddUserToRole( " zhangsan " " User " );
}

 

  這樣,在建立zhangsan這個用戶以後,順便給zhangsan分配了User這個角色。在後面,就能夠再配置文件中作以下配置:

複製代碼
< configuration >
    
< appSettings />
    
< connectionStrings />
    
< system.web >
      
< authorization >
        
< allow  roles ="User" />
        
< deny  users ="?" />
      
</ authorization >
    
</ system.web >
</ configuration >
複製代碼

  這樣,全部新註冊的成員才能夠訪問本目錄下的資源,具體配置能夠參考ASP.NET身份驗證機制membership入門——配置篇(2)

 

  ok.API的部分就介紹到這裏了

相關文章
相關標籤/搜索