更新:2007 年 11 月
ASP.NET 成員資格為您提供了一種驗證和存儲用戶憑據(jù)的內(nèi)置方法。因此,ASP.NET 成員資格可幫助您管理網(wǎng)站中的用戶身份驗證。您可以將 ASP.NET 成員資格與 ASP.NET Forms 身份驗證或 ASP.NET 登錄控件一起使用以創(chuàng)建一個完整的用戶身份驗證系統(tǒng)。
ASP.NET 成員資格支持下列功能:
創(chuàng)建新用戶和密碼。
將成員資格信息(用戶名、密碼和支持數(shù)據(jù))存儲在 Microsoft SQL Server、Active Directory 或其他數(shù)據(jù)存儲區(qū)。
對訪問站點的用戶進行身份驗證??梢砸跃幊谭绞津炞C用戶,也可以使用 ASP.NET 登錄控件創(chuàng)建一個只需很少代碼或無需代碼的完整身份驗證系統(tǒng)。
管理密碼,包括創(chuàng)建、更改和重置密碼。根據(jù)您選擇的成員資格選項不同,成員資格系統(tǒng)還可以提供一個使用用戶提供的問題和答案的自動密碼重置系統(tǒng)。
公開經(jīng)過身份驗證的用戶的唯一標識,您可以在您自己的應(yīng)用程序中使用該標識,也可以將該標識與 ASP.NET 個性化設(shè)置和角色管理(授權(quán))系統(tǒng)集成。
指定自定義成員資格提供程序,這使您可以改為用自己的代碼管理成員資格及在自定義數(shù)據(jù)存儲區(qū)中維護成員資格數(shù)據(jù)
雖然成員資格是 ASP.NET 中用來進行身份驗證的獨立功能,但它可以與 ASP.NET 角色管理集成以便為站點提供授權(quán)服務(wù)。成員資格還可以與用戶配置文件集成,以提供可為單個用戶量身訂做的特定于應(yīng)用程序的自定義。有關(guān)詳細信息,請參見 使用角色管理授權(quán)和ASP.NET 配置文件屬性概述。
若要使用成員資格,必須首先為站點配置成員資格。主要分為下面的步驟:
將成員資格選項指定為網(wǎng)站配置的一部分。默認情況下,成員資格處于啟用狀態(tài)。還可以指定要使用哪個成員資格提供程序。(實際上,這意味著指定要存儲成員資格信息的數(shù)據(jù)庫的類型。)默認提供程序使用 Microsoft SQL Server 數(shù)據(jù)庫。還可以選擇使用 Active Directory 存儲成員資格信息,或者可以指定自定義提供程序。有關(guān)可以在 ASP.NET 應(yīng)用程序的 Web.config 文件中指定的成員資格配置選項的信息,請參見配置 ASP.NET 應(yīng)用程序以使用成員資格。
將應(yīng)用程序配置為使用 Forms 身份驗證(與 Windows 或 Passport 身份驗證不同)。通常指定應(yīng)用程序中的某些頁或文件夾受到保護,并只能由經(jīng)過身份驗證的用戶訪問。
為成員資格定義用戶帳戶??梢酝ㄟ^多種方式執(zhí)行此操作??梢允褂镁W(wǎng)站管理工具,該工具提供了一個用于創(chuàng)建新用戶的類似向?qū)У慕缑?。或者,可以?chuàng)建一個“新用戶”ASP.NET 網(wǎng)頁,在該網(wǎng)頁中收集用戶名和密碼(及電子郵件地址(可選)),然后使用一個名為 CreateUser 的成員資格函數(shù)在成員資格系統(tǒng)中創(chuàng)建一個新用戶。
現(xiàn)在,您就可以使用成員資格對應(yīng)用程序中的用戶進行身份驗證。大多數(shù)情況下,您將需要提供一個登錄窗體,它可能是一個單獨頁或主頁上的一個專用區(qū)域。可以使用 ASP.NET TextBox 控件手動創(chuàng)建登錄窗體,也可以使用 ASP.NET 登錄控件。由于您已將應(yīng)用程序配置為使用 Forms 身份驗證,因此在未經(jīng)驗證的用戶請求一個受保護的頁面時,ASP.NET 將自動顯示登錄頁。
![]() |
---|
ASP.NET 登錄控件(Login、LoginView、LoginStatus、LoginName 和 PasswordRecovery)實際上封裝了提示用戶輸入憑據(jù)及驗證成員資格系統(tǒng)中的憑據(jù)所需的所有邏輯。 |
如果使用登錄控件,它們將自動使用成員資格系統(tǒng)驗證用戶。如果已手動創(chuàng)建了一個登錄窗體,可以提示用戶輸入用戶名和密碼,然后調(diào)用 ValidateUser 方法執(zhí)行驗證。在驗證用戶后,可以使用 Forms 身份驗證保留有關(guān)用戶的信息(例如,如果用戶的瀏覽器接受 Cookie 使用加密 Cookie)。登錄控件可自動執(zhí)行此任務(wù)。如果已手動創(chuàng)建了一個登錄窗體,可以調(diào)用 FormsAuthentication 類的方法來創(chuàng)建 Cookie 并將它寫入用戶的計算機。如果用戶忘記了他或她的密碼,則登錄頁可以調(diào)用成員資格函數(shù),幫助用戶找到密碼或創(chuàng)建一個新密碼。
用戶每次請求其他受保護的頁面時,ASP.NET Forms 身份驗證都會檢查該用戶是否經(jīng)過身份驗證,然后相應(yīng)地允許該用戶查看該頁面或?qū)⒂脩糁囟ㄏ虻降卿涰摗DJ情況下,身份驗證 Cookie 在用戶會話期間一直有效。
在用戶經(jīng)過身份驗證后,成員資格系統(tǒng)會提供一個包含有關(guān)當前用戶的信息的對象。例如,您可以獲取成員資格用戶對象的屬性來確定用戶名、電子郵件地址、上次登錄時間等。
成員資格系統(tǒng)的一個重要方面是無需顯式執(zhí)行任何低級數(shù)據(jù)庫函數(shù)就可以獲取或設(shè)置用戶信息。例如,通過調(diào)用成員資格 CreateUser 方法就可創(chuàng)建一個新用戶。成員資格系統(tǒng)處理創(chuàng)建存儲用戶信息所需的數(shù)據(jù)庫記錄的細節(jié)。在調(diào)用 ValidateUser 方法檢查用戶憑據(jù)時,成員資格系統(tǒng)會執(zhí)行所有數(shù)據(jù)庫查詢。