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 类进行编程检查。
Important
此示例包含接受用户输入的文本框,这是潜在的安全威胁。 默认情况下,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集成,以提供特定于应用程序的自定义,这些自定义可以定制给单个用户。 有关详细信息,请参阅 Understanding Role Management 和 ASP.NET Profile Properties Overview。
该 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 文件中的 membership 配置节为 Web 应用程序指定 ASP.NET 成员身份配置。 可以使用成员资格部分的提供程序子部分来指定非默认提供程序之一的成员资格提供程序。 例如,以下 membership 节从当前应用程序配置中删除默认成员身份提供程序,并添加一个名称为 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, String, String, String, Boolean, MembershipCreateStatus) |
将具有指定属性值的新用户添加到数据存储,并返回一个状态参数,该参数指示用户已成功创建或用户创建失败的原因。 |
| CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus) |
将具有指定属性值和唯一标识符的新用户添加到数据存储,并返回一个状态参数,该参数指示用户已成功创建或用户创建失败的原因。 |
| CreateUser(String, String, String) |
将具有指定电子邮件地址的新用户添加到数据存储。 |
| CreateUser(String, String) |
将新用户添加到数据存储。 |
| DeleteUser(String, Boolean) |
从数据库中删除用户。 |
| DeleteUser(String) |
从数据库中删除用户和任何相关用户数据。 |
| FindUsersByEmail(String, Int32, Int32, Int32) |
获取成员身份用户的集合(在数据页中),其中电子邮件地址包含要匹配的指定电子邮件地址。 |
| FindUsersByEmail(String) |
获取成员身份用户的集合,其中电子邮件地址包含要匹配的指定电子邮件地址。 |
| FindUsersByName(String, Int32, Int32, Int32) |
获取成员身份用户的集合(在数据页中),其中用户名包含要匹配的指定用户名。 |
| FindUsersByName(String) |
获取成员身份用户的集合,其中用户名包含要匹配的指定用户名。 |
| GeneratePassword(Int32, Int32) |
生成指定长度的随机密码。 |
| GetAllUsers() |
获取数据库中所有用户的集合。 |
| GetAllUsers(Int32, Int32, Int32) |
获取数据库中所有数据页中所有用户的集合。 |
| GetNumberOfUsersOnline() |
获取当前访问应用程序的用户数。 |
| GetUser() |
获取数据源中的信息,并更新当前登录成员身份用户的上次活动日期/时间戳。 |
| GetUser(Boolean) |
获取当前登录成员身份用户的数据源中的信息。 更新当前登录成员身份用户的上次活动日期/时间戳(如果指定)。 |
| GetUser(Object, Boolean) |
获取与指定唯一标识符关联的成员身份用户的数据源中的信息。 更新用户的最后一个活动日期/时间戳(如果指定)。 |
| GetUser(Object) |
获取与指定唯一标识符关联的成员身份用户的数据源中的信息。 |
| GetUser(String, Boolean) |
获取指定成员身份用户的数据源中的信息。 更新用户的最后一个活动日期/时间戳(如果指定)。 |
| GetUser(String) |
获取指定成员身份用户的数据源中的信息。 |
| GetUserNameByEmail(String) |
获取用户的电子邮件地址与指定电子邮件地址匹配的用户名。 |
| UpdateUser(MembershipUser) |
使用指定用户的信息更新数据库。 |
| ValidateUser(String, String) |
验证提供的用户名和密码是否有效。 |
活动
| 名称 | 说明 |
|---|---|
| ValidatingPassword |
创建用户、更改密码或重置密码时发生。 |