标题：Membership
简介
验证用户凭据并管理用户设置。无法继承此类。 
命名空间:System.Web.Security
程序集:System.Web（在 system.web.dll 中）
语法
Visual Basic（声明）
Public NotInheritable Class Membership
Visual Basic（用法）
可对静态类的成员直接进行访问，无需类的实例。
C#
public static class Membership
C++
public ref class Membership abstract sealed
J#
public final class Membership
JScript
public final class Membership
Membership 类提供的功能
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 文件中 membership 配置节来为 Web 应用程序指定 ASP.NET 成员资格配置。可以使用 membership 节的 providers 子节来指定默认提供程序之一以外的成员资格提供程序。例如，下面的 membership 节从当前应用程序配置中移除默认成员资格提供程序并添加一个名为 SqlProvider 的新提供程序，它连接到名为 MySqlServer 的 SQL Server 实例。
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=MySqlServer;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>
Topic Location 
演练：使用成员资格和用户登录创建网站 (Visual Studio)
示例
下面的代码示例演示配置为使用 Forms 身份验证和 ASP.NET 成员资格的 ASP.NET 应用程序的登录页。如果提供的用户凭据无效，则会向用户显示一条消息。否则，使用 RedirectFromLoginPage 方法将用户重定向到最初请求的 URL。
注意
ASP.NET 登录控件（Login、LoginView、LoginStatus、LoginName 和 PasswordRecovery）实际上封装了提示用户输入凭据及验证成员资格系统中的凭据所需的所有逻辑并可以在使用 Membership 类来进行编程检查的位置使用。
Visual Basic 复制代码
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<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>
<head>
<title>Login</title>
</head>
<body>
<form runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><P>
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 <u>not</u> a public computer.
</form>
</body>
</html>
C# 复制代码
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<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>
<head>
<title>Login</title>
</head>
<body>
<form runat="server">
<h3>Login</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><P>
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 <u>not</u> a public computer.
</form>
</body>
</html>
.NET Framework 安全性
AspNetHostingPermission  用于在宿主环境中使用 Membership 类。要求值：LinkDemand。权限值：Minimal。
继承层次结构
System.Object 
System.Web.Security.Membership
线程安全
此类型的任何公共静态（Visual Basic 中的 Shared）成员都是线程安全的，但不保证所有实例成员都是线程安全的。
平台
Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition