複製鏈接
請複製以下鏈接發送給好友

Membership

(軟件)

鎖定
ASP.NET 應用程序中,Membership 類用於驗證用户憑據並管理用户設置(如密碼和電子郵件地址)。Membership 類可以獨自使用,或者與 FormsAuthentication 一起使用以創建一個完整的 Web 應用程序或網站的用户身份驗證系統。Login 控件封裝了 Membership 類,從而提供一種便捷的用户驗證機制。
中文名
會員資格;會員身份;會員全體
外文名
Membership
相關程序
ASP.NET
使用方式
獨自使用,與FA一起使用
性    質
便捷的用户驗證機制
程序集
System.Web

Membership簡介

驗證用户憑據並管理用户設置。無法繼承此類。
命名空間:System.Web.Security
程序集:System.Web(在 system.web.dll 中)

Membership語法

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)

Membership示例

下面的代碼示例演示配置為使用 Forms身份驗證ASP.NET 成員資格的 ASP.NET 應用程序的登錄頁。如果提供的用户憑據無效,則會向用户顯示一條消息。否則,使用 RedirectFromLoginPage 方法將用户重定向到最初請求的 URL。

Membership注意

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>

Membership安全性

AspNetHostingPermission 用於在宿主環境中使用 Membership 類。要求值:LinkDemand。權限值:Minimal。

Membership層次結構

System.Object
System.Web.Security.Membership

Membership線程安全

此類型的任何公共靜態(Visual Basic 中的 Shared)成員都是線程安全的,但不保證所有實例成員都是線程安全的。

Membership平台

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