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

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

  不知道什麼原因,最近總是頭暈腦脹,做什麼事情感覺都不在狀態,再加上工作忙,覺得好累~不過不管怎麼說,寫博客一定要堅持,最少一月一篇~這算是給自己的任務吧。

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

  要使用Membership我們需要引入System.Web.Security這個命名空間。在這個命名空間中有這麼幾個常用的類:

  1. Membership
  2. Roles

 

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

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

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

 

複製代碼
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。

 

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

  FormsAuthentication類中,常用方法有:

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"這兩個選擇。

  第二個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的部分就介紹到這裏了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章