共用方式為


FormsAuthentication 類別

定義

管理 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)

適用於

另請參閱