FormsAuthentication 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
管理 Web 應用程式的窗體驗證服務。 無法繼承這個類別。
public ref class FormsAuthentication sealed
public sealed class FormsAuthentication
type FormsAuthentication = class
Public NotInheritable Class FormsAuthentication
- 繼承
-
FormsAuthentication
範例
下列程式代碼範例顯示 ASP.NET 應用程式的 Web.config 檔案,該應用程式會使用 ASP.NET 成員資格提供者進行窗體驗證,並要求所有使用者進行驗證。
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
</connectionStrings>
<system.web>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
</system.web>
</configuration>
下列程式代碼範例顯示使用窗體驗證和 ASP.NET 成員資格之 ASP.NET 應用程式的登入頁面。
重要
此範例包含接受使用者輸入的文本框,這是潛在的安全性威脅。 根據預設,ASP.NET 網頁會驗證使用者輸入不包含腳本或 HTML 元素。 如需詳細資訊,請參閱 文稿惡意探索概觀。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Login_OnClick(object sender, EventArgs args)
{
if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
Check here if this is <span style="text-decoration:underline">not</span> a public computer.
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub Login_OnClick(sender As Object, args As EventArgs)
If (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) Then
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked)
Else
Msg.Text = "Login failed. Please check your user name and password and try again."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
Check here if this is <span style="text-decoration:underline">not</span> a public computer.
</form>
</body>
</html>
備註
窗體驗證可針對不需要 Windows 驗證的 Web 應用程式啟用使用者和密碼驗證。 使用窗體驗證時,使用者資訊會儲存在外部數據源中,例如 Membership 資料庫,或應用程式組態檔中。 驗證用戶之後,窗體驗證會在 Cookie 或 URL 中維護驗證票證,讓已驗證的使用者不需要為每個要求提供認證。
將 驗證 組態專案的 mode
屬性設定為 Forms
,以啟用窗體驗證。 您可以使用 授權 組態項目來拒絕任何未知使用者的要求,要求應用程式的所有要求都包含有效的使用者驗證票證,如下列範例所示。
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
在上一個範例中,應用程式一部分之 ASP.NET 頁面的任何要求都需要窗體驗證所提供的有效用戶名稱。 如果沒有使用者名稱存在,則會將要求重新導向至已設定的 LoginUrl。
FormsAuthentication 類別可讓您在驗證使用者的應用程式中使用的方法和屬性。 RedirectToLoginPage 方法會將瀏覽器重新導向至已設定的 LoginUrl,讓使用者登入應用程式。 RedirectFromLoginPage 方法會將已驗證的使用者重新導向回所要求的原始受保護 URL,或重新導向至 DefaultUrl。 另外還有一種方法可讓您視需要管理窗體驗證票證。
建構函式
FormsAuthentication() |
初始化 FormsAuthentication 類別的新實例。 |
屬性
CookieDomain |
取得窗體驗證 Cookie 網域的值。 |
CookieMode |
取得值,這個值表示應用程式是否設定為無 Cookie 窗體驗證。 |
CookieSameSite |
取得或設定 Cookie 的 SameSite 屬性值。 |
CookiesSupported |
取得值,指出應用程式是否設定為支援無 Cookie 窗體驗證。 |
DefaultUrl |
取得如果未指定重新導向 URL,則 FormsAuthentication 類別會重新導向至的 URL。 |
EnableCrossAppRedirects |
取得值,指出已驗證的使用者是否可以重新導向至其他 Web 應用程式中的 URL。 |
FormsCookieName |
取得用來儲存窗體驗證票證的Cookie名稱。 |
FormsCookiePath |
取得窗體驗證 Cookie 的路徑。 |
IsEnabled |
取得值,這個值表示是否啟用窗體驗證。 |
LoginUrl |
取得 FormsAuthentication 類別將重新導向之登入頁面的 URL。 |
RequireSSL |
取得值,指出窗體驗證 Cookie 是否需要 SSL 才能傳回伺服器。 |
SlidingExpiration |
取得值,指出是否啟用滑動到期。 |
TicketCompatibilityMode |
取得值,這個值表示票證到期日是否要使用國際標準時間 (UTC) 或當地時間。 |
Timeout |
取得驗證票證到期前的時間量。 |
方法
Authenticate(String, String) |
已淘汰.
針對儲存在應用程式組態檔中的認證,驗證使用者名稱和密碼。 |
Decrypt(String) |
根據傳遞至 方法的加密窗體驗證票證,建立 FormsAuthenticationTicket 物件。 |
EnableFormsAuthentication(NameValueCollection) |
啟用窗體驗證。 |
Encrypt(FormsAuthenticationTicket) |
建立字串,其中包含適合用於 HTTP Cookie 的加密窗體驗證票證。 |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetAuthCookie(String, Boolean, String) |
建立指定使用者名稱的驗證 Cookie。 這不會將 Cookie 設定為傳出回應的一部分。 |
GetAuthCookie(String, Boolean) |
建立指定使用者名稱的驗證 Cookie。 這不會將 Cookie 設定為傳出回應的一部分,因此應用程式可以更充分掌控 Cookie 的發出方式。 |
GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
GetRedirectUrl(String, Boolean) |
針對導致重新導向至登入頁面的原始要求,傳回重新導向 URL。 |
GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
HashPasswordForStoringInConfigFile(String, String) |
已淘汰.
根據指定的密碼和哈希演算法,產生適合儲存在組態檔中的哈希密碼。 |
Initialize() |
根據應用程式的組態設定,初始化 FormsAuthentication 物件。 |
MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
RedirectFromLoginPage(String, Boolean, String) |
使用窗體驗證 Cookie 的指定 Cookie 路徑,將已驗證的使用者重新導向回原始要求的 URL 或預設 URL。 |
RedirectFromLoginPage(String, Boolean) |
將已驗證的使用者重新導向回原始要求的 URL 或預設 URL。 |
RedirectToLoginPage() |
將瀏覽器重新導向至登入 URL。 |
RedirectToLoginPage(String) |
使用指定的查詢字串,將瀏覽器重新導向至登入 URL。 |
RenewTicketIfOld(FormsAuthenticationTicket) |
有條件地更新 FormsAuthenticationTicket的問題日期和時間和到期日。 |
SetAuthCookie(String, Boolean, String) |
建立所提供使用者名稱的驗證票證,並使用提供的 Cookie 路徑將它新增至回應的 Cookie 集合,或如果您使用無 Cookie 驗證,請使用 URL。 |
SetAuthCookie(String, Boolean) |
建立所提供使用者名稱的驗證票證,並將它新增至回應的 Cookie 集合,或如果您使用無 Cookie 驗證,則新增至 URL。 |
SignOut() |
從瀏覽器移除窗體驗證票證。 |
ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |