Membership 类

定义

验证用户凭据并管理用户设置。 此类不能被继承。

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

示例

下面的代码示例显示了配置为使用表单身份验证和 ASP.NET 成员身份的 ASP.NET 应用程序的登录页。 如果提供的用户凭据无效,则会向用户显示一条消息。 否则,将使用该方法将用户重定向到最初请求的 URL RedirectFromLoginPage

备注

ASP.NET 登录控件 (LoginLoginView、、LoginStatusPasswordRecoveryLoginName) 封装几乎所有提示用户输入凭据并验证成员身份系统中凭据所需的逻辑,并可用于代替使用Membership类进行编程检查。

重要

此示例包含接受用户输入的文本框,这是潜在的安全威胁。 默认情况下,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>

注解

此类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的本地实例。

可以修改默认设置以将SqlMembershipProvider实例指定AspNetSqlProvider为默认提供程序,或使用 Web.config 文件将自定义提供程序的实例指定为 ASP.NET 应用程序的默认提供程序。 可以使用Web.config文件中的成员身份配置部分为 Web 应用程序指定 ASP.NET 成员身份配置。 可以使用成员资格部分的提供程序子节来指定成员身份提供程序,而不是默认提供程序之一。 例如,以下成员资格部分从当前应用程序配置中删除默认成员身份提供程序,并添加一个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

在创建了用户、更改了密码或重置了密码时发生。

适用于

另请参阅