學習Froms驗證(二)

   由於前面發表的《學習Froms驗證》裏面的內容我理解,但是不是很熟悉於是找了些資料學習一下學習Froms驗證

   System.Web.Security命名空間的FormsAuthentication類提供了很多通過forms authentication系統登陸和註銷的函數

FormsAuthentication.GetAuthCookie(username, persistCookie)——爲提供的username創建一個表單認證票據,接下來該方法創建並返回一個HttpCookie對象,該對象包含了票據的內容.如果persistCookie爲true,則創建一個"持久性"的cookie.

FormsAuthentication.SetAuthCookie(username, persistCookie)——調用GetAuthCookie(username, persistCookie) 方法來生成表單認證票據.該方法將GetAuthCookie()方法返回的cookie添加到Cookies collection裏(我們假定使用的是基於cookie的forms authentication.不然,該方法將調用一個內部的類來處理無Cookie的票據邏輯)

FormsAuthentication.RedirectFromLoginPage(username, persistCookie)——該方法調用SetAuthCookie(username, persistCookie),然後將用戶再導航到恰當的頁面.

這裏當用戶輸入一個有效的證書時,我前面提到過要將他們返回到一個“恰當的頁面”.那麼什麼是恰當的頁面呢?我們知道,當用戶訪問一個未被授權的頁面時,Forms Authentication自動將其導航到登陸頁面,登陸成功後,就在查詢字符串裏的ReturnUrl參數裏包含該請求的URL.那就是說,如果用戶試圖訪問ProtectedPage.aspx頁面,但其又未被授權,那麼Forms Authentication就會將他導航到

Login.aspx?ReturnUrl=ProtectedPage.aspx

 

我們可以通過HttpContext object的User屬性來判斷當前登陸用戶的身份.HttpContext object對象描述了當前請求的信息,當然它也可以表示這些常見的ASP.NET objects:Response,Request,以及Session等.該User屬性描述了當前HTTP request的security context,並且執行IPrincipal接口.

User屬性是由FormsAuthenticationModule來設置的.具體來說,當FormsAuthenticationModule在請求裏發現了一個票據,它就創建一個新的GenericPrincipal object對象並賦值給該User屬性.

 

Principal objects對象(比如GenericPrincipal)提供了用戶身份(identity)以及所屬角色的信息。IPrincipal接口定義了2個成員:

.IPrincipal——返回一個布爾值的方法,指出該principal是否屬於指定的角色.

.Identity——該屬性返回一個執行IIdentity接口的對象.而IIdentity接口定義了3個屬性:AuthenticationType, IsAuthenticated,以及Name.

當使用forms authentication時候,將會爲GenericPrincipal的Identity屬性創建一個FormsIdentity object對象.該FormsIdentity類的AuthenticationType屬性總是返回字符串“Forms” ,IsAuthenticated屬性總是返回true,而Name屬性返回的就是創建票據時指定的username;除了這3個屬性外,FormsIdentity還有一個Ticket屬性,通過該屬性我們可以訪問潛在的票據 .該Ticket屬性返回的是一個FormsAuthenticationTicket類型的對象.該類型有諸如Expiration, IsPersistent, IssueDate, Name等的屬性.

這裏有兩個控件是與這裏的機制是對應的LoginView,通過驗證就是LoggedInTemplate沒有通過就是AnonymousTemplate

LoginStatus驗證後可以顯示出註銷,沒有驗證選擇登錄

 

來源:http://www.cnblogs.com/couhujia/archive/2009/10/26/1589971.html

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