Membership 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
验证用户凭据并管理用户设置。 此类不能被继承。
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 登录控件 (Login、 LoginView、 LoginStatus、 LoginName和 PasswordRecovery) 封装了提示用户输入凭据和验证成员身份系统中的凭据所需的几乎所有逻辑,并且可以使用 类代替编程检查 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
为 的新提供程序,该提供程序连接到名为 的 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 |
在创建了用户、更改了密码或重置了密码时发生。 |