Membership[軟體]

Membership[軟體]
更多義項 ▼ 收起列表 ▲

在 ASP.NET 應用程式中,Membership 類用於驗證用戶憑據並管理用戶設定(如密碼和電子郵件地址)。Membership 類可以獨自使用,或者與 FormsAuthentication 一起使用以創建一個完整的 Web 應用程式或網站的用戶身份驗證系統。Login 控制項封裝了 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 類提供的功能可用於:

創建新用戶。

將成員資格信息(用戶名、密碼、電子郵件地址及支持數據)存儲在 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>

安全性

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

相關詞條

熱門詞條

聯絡我們