.NET註銷的實現

除了提供用戶登錄的方法外,FormsAuthentication 類還提供了 SignOut方法。SignOut 方法只是銷燬表單身份驗證票證,從而從網站中註銷用戶。

    提供註銷鏈接是一個常用功能,因而ASP.NET 有一個專門設計來註銷用戶的控件。LoginStatus控件 根據用戶的身份驗證狀態來顯示“登錄” 鏈接按鈕或“註銷”鏈接按鈕。“登錄”鏈接按鈕呈現給匿名用戶,而“註銷”鏈接按鈕呈現給已驗證用戶。可通過LoginStatus 的 LoginText和LogoutText屬性來配置“登錄”和“註銷”鏈接按鈕的文本。

    單擊“登錄”鏈接按鈕會導致一個回傳,進而重定向到登錄頁面。單擊“註銷”鏈接按鈕會導致LoginStatus 控件調用FormsAuthentication.SignOff() 方法,然後將用戶重定向到某個頁面。註銷用戶被重定向到哪個頁面取決於LogoutAction 屬性,該屬性可以取以下三值之一:

  • Refresh – 默認值;將用戶重定向到他們剛訪問的頁面。如果他們剛訪問的頁面不允許匿名用戶,則FormsAuthenticationModule 會自動將用戶重定向到登錄頁面。
  • Redirect – 用戶被重定向到 LoginStatus 的 LogoutPageUrl 屬性中指定的 URL 。
  • RedirectToLoginPage – 用戶被重定向到登錄頁面。

    您可能會奇怪此處爲何要進行重定向。如果用戶想停留在同一頁面,爲何還需要顯式重定向?原因是單擊“註銷” 鏈接按鈕時,用戶的表單身份驗證票證仍然在Cookie 集合中。因此,回傳請求是一個驗證過的請求。LoginStatus 控件會調用SignOut 方法,但可能是在FormsAuthenticationModule 驗證了用戶之後調用。因此,顯式重定向會導致瀏覽器重新請求頁面。但瀏覽器重新請求頁面時,表單身份驗證票證已刪除,因此該請求是匿名的。

自定義註銷控件的代碼:

FormsAuthentication.SignOut();//表示銷燬表單身份驗證票證

Response.Redirect("~/Login.aspx");//表示回到登錄頁面

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