與Forms Authentication
相關的配置
在web.config檔案中,<system.web>/<authentication>配置節用於對驗證進行配置。為<authentication>節點提供mode="Forms"屬性可以啟用Forms Authentication。一個典型的<authentication>配置節如下所示:
<authentication mode="Forms">
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="false"
enableCrossAppRedirects="false"
cookieless="UseDeviceProfile"
domain=""
/>
</authentication>
FormsAuthentication
類
FormsAuthentication類用於輔助我們完成表單驗證,並進一步完成使用者登入等功能。該類位於system.web.dll程式集的System.Web.Security命名空間中。通常在Web網站項目中可以直接使用這個類,如果是在類庫項目中使用這個類,請確保引用了system.web.dll。
該類少數幾個常用的方法。
RedirectToLoginPage方法用於從任何頁面重新導向到登入頁,該方法有兩種重載方式:
public static void RedirectToLoginPage ()public static void RedirectToLoginPage (string extraQueryString)
兩種方式均會使瀏覽器重新導向到登入頁(登入頁的URL由<forms>節點的loginUrl屬性指出)。第二種重載方式還能夠提供額外的查詢字串。
RedirectToLoginPage通常在任何非登入頁的頁面中調用。該方法除了進行重新導向之外,還會向URL中附加一個ReturnUrl參數,該參數即為調用該方法時所在的頁面的URL地址。這是為了方便登入後能夠自動回到登入前所在的頁面。
RedirectFromLoginPage方法用於從登入頁跳回登入前頁面。這個“登入前”頁面即由訪問登入頁時提供的ReturnUrl參數指定。如果沒有提供ReturnUrl參數(例如,不是使用RedirectToLoginPage方法而是用其他手段重新導向到或直接存取登入頁時),則該方法會自動跳轉到由<forms>節點的defaultUrl屬性所指定的預設頁。
此外,如果<forms>節點的enableCrossAppRedirects屬性被設定為false,ReturnUrl參數所指定的路徑必須是當前Web應用程式中的路徑,否則(如提供其他網站下的路徑)也將返回到預設頁。
RedirectFromLoginPage方法有兩種重載形式:
public static void RedirectFromLoginPage (string userName, bool createPersistentCookie)public static void RedirectFromLoginPage (string userName, bool createPersistentCookie, string strCookiePath)
userName參數表示使用者的標識(如使用者名稱、使用者ID等);
createPersistentCookie參數表示是否“記住我”;
strCookiePath參數表示Cookie路徑。
RedirectFromLoginPage方法除了完成重新導向之外,還會將經過加密(是否加密取決於<forms>節點的protection屬性)的使用者憑證存放到Cookie或Uri中。在後續訪問中,只要Cookie沒有到期,則將可以通過HttpContext.User.Identity.Name屬性得到這裡傳入的userName屬性。
此外,FormsAuthentication還有一個SignOut方法,用於完成使用者登出。其原理是從Cookie或Uri中移除使用者憑證。