驗證方法
我們可以使用下面 4 種方法中的一種進行票證寫入和重新導向操作,其實前 3 種只不過是對第 4 種方法的封裝而已。推薦使用 1、4。注意後三種方法不支援cookieless="UseUri"。
// 1. 使用預設身分識別驗證票證
FormsAuthentication.RedirectFromLoginPage("username", true);
// 2. 使用預設身分識別驗證票證
FormsAuthentication.SetAuthCookie("username", false);
Response.Redirect(FormsAuthentication.GetRedirectUrl("username", false));
// 3. 使用預設身分識別驗證票證
Response.Cookies.Add(FormsAuthentication.GetAuthCookie("username", false));
Response.Redirect(FormsAuthentication.GetRedirectUrl("username", false));
// 4. 使用自訂身分識別驗證票證
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "username", DateTime.Now, DateTime.Now.AddMinutes(10), false, null);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)));
Response.Redirect(FormsAuthentication.GetRedirectUrl("username", false));
FormsAuthentication
Authenticate
對照儲存在應用程式設定檔中的憑據來驗證使用者名稱和密碼。該方法只能驗證儲存在 web.config 中的使用者名稱和密碼資訊,大多數時候我們會用自己的驗證方法替代它。
Decrypt
解密從 Cookie 中擷取的加密字串,建立 FormsAuthenticationTicket 對象。
Encrypt
加密 FormsAuthenticationTicket,返回加密後字串。
GetRedirectUrl
返回導致重新導向到登入頁的原始請求 URL。GetRedirectUrl 方法返回查詢字串中使用 ReturnURL 變數名指定的 URL。例如,在 URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx 中,GetRedirectUrl 方法返回返回 caller.aspx。如果 ReturnURL 變數不存在,GetRedirectUrl 方法將返回 DefaultUrl 屬性中的 URL。
RedirectFromLoginPage
將經過身分識別驗證的使用者重新導向回最初請求的 URL 或 DefaultUrl 。
RedirectToLoginPage
將瀏覽器重新導向到登入 URL。
RenewTicketIfOld
有條件地更新 FormsAuthenticationTicket 的發出日期和時間以及到期日期和時間。 注意該方法只是返回更新後的 FormsAuthenticationTicket 對象,並不會寫入 Cookies。
GetAuthCookie
為給定的使用者名稱建立身分識別驗證 Cookie,並不添加到響應的 Cookie 集合或 URL。
SetAuthCookie
為提供的使用者名稱建立一個身分識別驗證票證,並將其添加到響應的 Cookie 集合或 URL。
SignOut
從瀏覽器刪除 Forms 身分識別驗證票證。
票證自訂資料應用
使用自訂票證時,我們可以添加一個 userData 參數。善加利用這個參數還是能帶了一些意想不到的好處的,諸如儲存使用者 VIP 等級編號,所擁有的許可權/角色集合等。當然 Cookie 和 URL 參數長度有限,這個自訂資料不能太長。