共用方式為


Membership 類別

定義

驗證使用者認證,並管理使用者設定。 此類別無法獲得繼承。

public ref class Membership abstract sealed
public static class Membership
type Membership = class
Public Class Membership
繼承
Membership

範例

下列程式代碼範例顯示設定為使用窗體驗證和 ASP.NET 成員資格之 ASP.NET 應用程式的登入頁面。 如果提供的使用者認證無效,則會向用戶顯示訊息。 否則,使用者會使用 RedirectFromLoginPage 方法重新導向至原始要求的URL。

注意

ASP.NET 登入控件 (LoginLoginViewLoginStatusLoginNamePasswordRecovery) 幾乎會封裝提示使用者輸入認證並驗證成員資格系統中認證所需的所有邏輯,而且可以使用 類別取代程式設計檢查 Membership

重要

此範例包含一個文本框,可接受用戶輸入,這是潛在的安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。

<%@ 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>

備註

類別 Membership 用於 ASP.NET 應用程式中,以驗證使用者認證及管理用戶設定,例如密碼和電子郵件位址。 類別 Membership 可以自行使用,或搭配 FormsAuthentication 來建立完整的系統,以驗證 Web 應用程式或網站的使用者。 控件 Login 會封裝 類別, Membership 以提供方便的機制來驗證使用者。

注意

如果您不熟悉 ASP.NET 的成員資格功能,請參閱 成員資格簡介 ,再繼續進行。 如需與成員資格相關的其他主題清單,請參閱 使用成員資格管理使用者

類別 Membership 提供下列功能:

  • 建立新的使用者。

  • 將成員資格資訊儲存 (使用者名稱、密碼、電子郵件地址和支援數據) Microsoft SQL Server 或替代數據存放區中。

  • 驗證瀏覽您的網站的使用者。 您可以以程式設計方式驗證使用者,或使用 Login 控制項來建立需要少量或沒有程式代碼的完整驗證系統。

  • 管理密碼,包括建立、變更、擷取和重設密碼等等。 您可以選擇性地將 ASP.NET 成員資格設定為要求密碼問題,並回答驗證密碼重設或擷取已忘記密碼的使用者要求。

雖然 ASP.NET 成員資格是 ASP.NET 進行驗證的自我常設功能,但可以與 ASP.NET 角色管理整合,以提供網站的授權服務。 成員資格也可以與 ASP.NET 使用者 System.Web.Profile 整合,以提供可針對個別使用者量身打造的應用程式特定自定義。 如需詳細資訊,請參閱 瞭解角色管理和ASP.NET 配置檔屬性概觀

類別 Membership 依賴成員資格提供者來與數據源通訊。 .NET Framework 包含 SqlMembershipProvider,它會將使用者資訊儲存在 Microsoft SQL Server 資料庫中,以及 ActiveDirectoryMembershipProvider可讓您將使用者資訊儲存在 Active Directory 或 Active Directory 應用程式模式上, (ADAM) 伺服器。 您也可以實作自定義成員資格提供者,以與 類別可使用的 Membership 替代數據源通訊。 自定義成員資格提供者會繼承 MembershipProvider 抽象類。 如需詳細資訊,請參閱 實作成員資格提供者

根據預設,所有 ASP.NET 應用程式都會啟用 ASP.NET 成員資格。 預設成員資格提供者是 , SqlMembershipProvider 且會在電腦組態中指定名稱為 AspNetSqlProvider。 的預設實例 SqlMembershipProvider 會設定為連接到 Microsoft SQL Server 的本機實例。

您可以修改預設設定,以將 實例以外的 AspNetSqlProvider 指定SqlMembershipProvider為預設提供者,或使用 Web.config 檔案,將自定義提供者的實例指定為 ASP.NET 應用程式的預設提供者。 您可以使用 Web.config 檔案中的成員資格組態區段,為 Web 應用程式指定 ASP.NET 成員資格 設定。 您可以使用成員資格區段的 providers 子區段來指定成員資格提供者,而不是其中一個預設提供者。 例如,下列成員資格區段會從目前的應用程式組態中移除預設 成員資格 提供者,並將名稱為 的新 SqlProvider 提供者新增至名為的 AspSqlServerSQL Server 實例。

<configuration>  
  <connectionStrings>  
    <add name="SqlServices" connectionString="Data Source=AspSqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />  
  </connectionStrings>  
  <system.web>  
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">  
      <providers>  
        <remove name="AspNetSqlProvider" />  
        <add name="SqlProvider"  
          type="System.Web.Security.SqlMembershipProvider"  
          connectionStringName="SqlServices"  
          enablePasswordRetrieval="false"  
          enablePasswordReset="true"  
          requiresQuestionAndAnswer="true"  
          passwordFormat="Hashed"  
          applicationName="/" />  
      </providers>  
    </membership>  
  </system.web>  
</configuration>  

屬性

ApplicationName

取得或設定應用程式的名稱。

EnablePasswordReset

取得值,指出目前成員資格提供者是否設定為允許使用者重設密碼。

EnablePasswordRetrieval

取得值,指出目前成員資格提供者是否設定為允許使用者擷取密碼。

HashAlgorithmType

演算法的識別項,用於雜湊密碼。

MaxInvalidPasswordAttempts

取得鎖定成員資格使用者以前,所允許的無效密碼或密碼解答嘗試次數。

MinRequiredNonAlphanumericCharacters

取得有效的密碼中必須要有的特殊字元數目下限。

MinRequiredPasswordLength

取得密碼所需的最小長度。

PasswordAttemptWindow

取得時間範圍,在此時間範圍內會追蹤提供有效密碼或密碼解答的連續失敗嘗試。

PasswordStrengthRegularExpression

取得用來評估密碼的規則運算式。

Provider

取得應用程式預設成員資格提供者的參考。

Providers

取得 ASP.NET 應用程式的成員資格提供者集合。

RequiresQuestionAndAnswer

取得值,指出預設成員資格提供者是否要求使用者解答密碼問題,以便重設及擷取密碼。

UserIsOnlineTimeWindow

指定使用者最後活動日期/時間戳記之後的分鐘數,在其間使用者會視為在線上。

方法

CreateUser(String, String)

加入新的使用者至資料存放區。

CreateUser(String, String, String)

新增具有指定電子郵件地址的新使用者至資料存放區。

CreateUser(String, String, String, String, String, Boolean, MembershipCreateStatus)

加入具有指定屬性值的新使用者至資料存放區中,並傳回狀態參數,指出該使用者建立成功,或是使用者建立失敗的原因。

CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus)

加入具有指定屬性值和唯一識別項的新使用者至資料存放區中,並傳回狀態參數,指出該使用者建立成功,或是使用者建立失敗的原因。

DeleteUser(String)

從資料庫刪除使用者和任何相關的使用者資料。

DeleteUser(String, Boolean)

從資料庫刪除使用者。

FindUsersByEmail(String)

取得成員資格使用者集合,其中電子郵件地址包含要符合的指定電子郵件地址。

FindUsersByEmail(String, Int32, Int32, Int32)

以分頁資料的方式取得成員資格使用者的集合,其中的電子郵件地址包含必須符合的指定電子郵件地址。

FindUsersByName(String)

取得成員資格使用者的集合,其中的使用者名稱包含必須符合的特定使用者名稱。

FindUsersByName(String, Int32, Int32, Int32)

以分頁資料的方式取得成員資格使用者的集合,其中的使用者名稱包含必須符合的指定使用者名稱。

GeneratePassword(Int32, Int32)

產生指定長度的隨機密碼。

GetAllUsers()

取得資料庫中所有使用者的集合。

GetAllUsers(Int32, Int32, Int32)

以分頁資料的方式取得資料庫中所有使用者集合。

GetNumberOfUsersOnline()

取得目前存取應用程式的使用者數。

GetUser()

從資料來源取得資訊,並為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

GetUser(Boolean)

從資料來源取得目前登入成員資格使用者的資訊。 如果已指定,會為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

GetUser(Object)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。

GetUser(Object, Boolean)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

GetUser(String)

從資料來源取得指定成員資格使用者的資訊。

GetUser(String, Boolean)

從資料來源取得指定成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

GetUserNameByEmail(String)

取得使用者名稱,其中使用者的電子郵件地址與指定的電子郵件地址相符。

UpdateUser(MembershipUser)

以指定使用者的資訊更新資料庫。

ValidateUser(String, String)

驗證所提供的使用者名稱和密碼是否有效。

事件

ValidatingPassword

當建立使用者、變更密碼或重設密碼時發生。

適用於

另請參閱