基于窗體的身份驗(yàn)證基于窗體的身份驗(yàn)證是 ASP.NET 身份驗(yàn)證服務(wù),它使應(yīng)用程序能夠提供它們自己的登錄 UI 和進(jìn)行它們自己的憑據(jù)驗(yàn)證。ASP.NET 驗(yàn)證用戶的身份,將未授權(quán)的用戶重定向到登錄頁(yè)并執(zhí)行所有必要的 Cookie 管理。這種身份驗(yàn)證是許多 Web 站點(diǎn)使用的流行方法。 應(yīng)用程序必須被配置成使用基于窗體的身份驗(yàn)證,將 <authentication> 設(shè)置為 Forms 并且拒絕匿名用戶訪問(wèn)。下面的示例說(shuō)明如何在所需應(yīng)用程序的 Web.config 文件中完成此配置: 管理員使用基于窗體的身份驗(yàn)證來(lái)配置要使用的 Cookie 名稱、保護(hù)類型、用于登錄頁(yè)的 URL、Cookie 生效的時(shí)間長(zhǎng)度以及用于已發(fā)布 Cookie 的路徑。下表顯示了 <Forms> 元素(它是下面的示例中顯示的 <authentication> 元素的子元素)的有效屬性:
配置了應(yīng)用程序后,需要提供一個(gè)登錄頁(yè)。下面的示例顯示了一個(gè)簡(jiǎn)單的登錄頁(yè)。示例在運(yùn)行時(shí)要求 Default.aspx 頁(yè)。未授權(quán)的請(qǐng)求被重定向到登錄頁(yè) (Login.aspx),此頁(yè)顯示一個(gè)簡(jiǎn)單的窗體,提示用戶輸入電子郵件地址和密碼。(使用 Username="jdoe@somewhere.com" 和 Password="password" 作為憑據(jù)。) 驗(yàn)證了憑據(jù)后,應(yīng)用程序調(diào)用下列內(nèi)容: <script language=JavaScript> function doClick(index, numTabs, id) { document.all("tab" + id, index).className = "tab"; for (var i=1; i < numTabs; i++) { document.all("tab" + id, (index + i) % numTabs).className = "backtab"; } document.all("code" + id, index).style.display = ""; for (var j=1; j < numTabs; j++) { document.all("code" + id, (index + j) % numTabs).style.display = "none"; } } </script>
這將用戶重定向回當(dāng)初請(qǐng)求的 URL。不想執(zhí)行重定向的應(yīng)用程序可以或者調(diào)用 FormsAuthentication.GetAuthCookie 來(lái)檢索 Cookie 值,或者調(diào)用 FormsAuthentication.SetAuthCookie 將正確加密的 Cookie 附加到輸出的響應(yīng)中。對(duì)于提供嵌入在包含頁(yè)中的登錄 UI 的應(yīng)用程序,或者想要更多地控制用戶被重定向到的位置的應(yīng)用程序而言,這些方法很有用。身份驗(yàn)證 Cookie 既可以臨時(shí)又可以永久(“持久”)。臨時(shí) Cookie 只在當(dāng)前瀏覽器會(huì)話期間保持。當(dāng)瀏覽器關(guān)閉時(shí),臨時(shí) Cookie 隨即丟失。永久 Cookie 則被瀏覽器保存,并在瀏覽器會(huì)話間回發(fā),直到被用戶顯式刪除。
窗體身份驗(yàn)證使用的身份驗(yàn)證 Cookie 由 System.Web.Security.FormsAuthenticationTicket 類的線性版本組成。信息包括用戶名(但沒(méi)有密碼)、使用的窗體身份驗(yàn)證版本、發(fā)出 Cookie 的日期以及可選的應(yīng)用程序特定數(shù)據(jù)的字段。 通過(guò)使用 FormsAuthentication.SignOut 方法,應(yīng)用程序代碼可以撤消或移除身份驗(yàn)證 Cookie。這將移除身份驗(yàn)證 Cookie,不論它是臨時(shí)的還是永久的。 還可以使用配置為基于窗體的身份驗(yàn)證服務(wù)提供有效憑據(jù)的列表,如下例所示: 應(yīng)用程序然后可以調(diào)用 FormsAuthentication.Authenticate 并提供用戶名和密碼,ASP.NET 將驗(yàn)證憑據(jù)。根據(jù) passwordFormat 屬性的下列值,憑據(jù)可以存儲(chǔ)在明文中,或者存儲(chǔ)為 SHA1 或 MD5:
|
|