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 應用程式或網站的使用者。 控制項會封裝 類別 LoginMembership 以提供方便的機制來驗證使用者。

注意

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

類別 Membership 提供下列功能:

  • 建立新的使用者。

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

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

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

雖然 ASP.NET 成員資格是 ASP.NET For authentication 中的獨立功能,但可以與 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 會連接到名為 AspSqlServer 的SQL 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

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

適用於

另請參閱