ASP.NET 2.0 中的新增安全功能
Stephen Walther
Microsoft Corporation
適用于:
Microsoft ASP.NET 2.0
Microsoft ASP.NET framework
Microsoft SQL Server
Microsoft Visual Studio .NET
摘要:ASP.NET 2.0 包含一些新增功能,以使確保 ASP.NET 應用程序的安全性變得比以前更加容易。了解如何使用新增的控件、工具和 API 來控制對頁的訪問,并且使存儲有關用戶的信息變得更加容易。
本頁內容
| 安全性和提供程序模型 | |
| 使用 Web 站點管理工具來配置安全性 | |
| 使用 Login 控件來創建標準安全頁 | |
| 直接使用 Membership API | |
| 小結 |
ASP.NET 2.0 是在 ASP.NET 1.x 的基礎之上構建的,使您能夠更加容易地創建和管理用戶,以及對 Web 應用程序中的頁進行密碼保護。新的框架包含用于處理身份驗證和授權的新增功能,能夠同時滿足 Web 站點管理員和開發人員的需要。
Web 站點管理員可以利用新的 Web 站點管理工具來創建新的用戶和角色,以及控制對 Web 應用程序中頁面的訪問。Web 站點管理工具是一組預先編寫的 ASP.NET 頁,不具備編程技巧的用戶可以使用它們來配置 Web 應用程序。
開發人員可以利用新增的 Login 控件,以便快速地在 Web 應用程序中生成與安全性相關的頁面。例如,開發人員可以簡單地通過將 Login 控件拖到 .aspx 頁上來創建登錄頁。通過利用 Login 控件,開發人員可以生成登錄頁、注冊頁或密碼恢復頁,而無須編寫任何代碼。
最后,ASP.NET 2.0 框架包含新增的安全性相關功能,這些功能能夠滿足高級開發人員的需要。新增的 Membership API 是一組類,這些類包含用于創建和檢索有關應用程序用戶的信息的方法。此外,新的框架包含能夠使處理自定義用戶角色變得更加容易的類。
安全性和提供程序模型
對于 ASP.NET 2.0 框架,您感受到的最大變化是安全性非常有效。使用新的框架,您在啟用表單身份驗證之后,可以立即針對用戶數據庫來注冊和驗證用戶,而無須生成任何數據庫表或者編寫任何代碼。這是因為 ASP.NET 2.0 框架使用提供程序模型來實現安全性。
提供程序模型(在整個 ASP.NET 2.0 框架中使用)為您提供了插入組件(它們為您的應用程序實現不同的服務)的標準方法。ASP.NET 2.0 框架使用兩種類型的提供程序來實現安全性:成員身份提供程序和角色提供程序。成員身份提供程序用于存儲用戶名和密碼,而角色提供程序用于存儲用戶角色。
默認的成員身份提供程序是 AccessMembershipProvider。該提供程序在 Microsoft Access 數據庫中存儲用戶名和密碼。將在應用程序的 Data 文件夾中為您自動創建 Access 數據庫(如果您意外刪除了 Access 數據庫,則當您下次嘗試連接到該數據庫時,將自動重新創建該數據庫)。每當您創建新的 Web 應用程序時,Access 提供程序都將自動創建您在開始驗證用戶身份時需要的所有內容。
ASP.NET 2.0 框架附帶了兩個成員身份提供程序:默認的 AccessMembershipProvider 以及 SqlMembershipProvider。如果您希望在 Microsoft SQL Server 數據庫中存儲成員身份信息,則可以將您的應用程序配置為使用 SqlMembershipProvider,而無須重新編寫任何應用程序代碼(啟用 SqlMembershipProvider 的步驟將在下一節討論)。
您還可以創建自定義成員身份提供程序。例如,您可能希望在 XML 文件、FoxPro 數據庫或 Oracle 數據庫中存儲成員身份信息。您甚至還可能希望實現通過 Web 服務檢索成員身份信息的成員身份提供程序。如果您希望創建您自己的成員身份提供程序,您需要實現抽象類 MembershipProvider 的所有方法和屬性(成員身份提供程序只是 MembershipProvider 基類的一個實例而已)。
使用 SqlMembershipProvider
如果您正在開發 Web 應用程序,或者正在開發準備供少數用戶使用的應用程序,則使用 Access 數據庫就已經很不錯了。然而,如果您需要生成更為健壯的應用程序,您需要在具有更高可伸縮性的數據庫(如 Microsoft SQL Server)中存儲用戶名和密碼。
如果您希望在 Microsoft SQL Server 數據庫而不是默認的 Microsoft Access 數據庫中存儲成員身份信息,則需要為您的應用程序修改默認的成員身份提供程序。下面的應用程序 Web.Config 文件將 AspNetSqlProvider 設置為默認的成員身份提供程序:
<configuration><system.web><membership defaultProvider="AspNetSqlProvider" /></system.web> </configuration>
如果您不希望手動更新應用程序的 Web.Config 文件,您還可以通過使用 Web 站點管理工具(在下一節中介紹)或用于 Internet 信息服務的 ASP.NET Microsoft 管理控制臺 (MMC) 管理單元來切換提供程序。這兩個工具都為您提供了用于指定成員身份提供程序的用戶友好界面。
與 Microsoft Access 提供程序不同,您必須首先創建必要的數據庫表和存儲過程,然后才能使用 SQL 提供程序。通過從命令行執行 aspnet_regsql 工具,您可以自動創建所有必需的 SQL Server 數據庫對象(參見圖 1)。默認情況下,該工具將在本地 SQL Server 實例上創建一個名為 aspnetdb 的新數據庫。
圖 1. 配置 SqlMembershipProvider
在您創建新的數據庫以后,您需要確保該數據庫可供您的 ASP.NET 應用程序訪問。默認情況下,將使用集成安全性。因此,您需要確保 ASP.NET 帳戶(對于 Windows Server 2003 而言,為 NT AUTHORITY/NETWORK SERVICE 帳戶;對于 Windows 2000 或 XP 而言,為 ASPNET 帳戶)具有訪問 aspnetdb 數據庫所需的權限。
配置成員身份提供程序屬性
AccessMembershipProvider 和 SqlMembershipProvider 都支持多個為提供程序所特有的屬性:
| ? | applicationName — 如果您需要在同一臺 Web 服務器上宿主多個應用程序,則可以使用該屬性來隔離與不同應用程序相關聯的用戶。 |
| ? | connectionStringName — 在 Web 配置文件的 connectionStrings 節中定義的數據庫連接字符串的名稱。 |
| ? | description — 提供程序定義的說明。 |
| ? | enablePasswordReset — 值為 true 時,用戶可以將其密碼重置為隨機生成的密碼。 |
| ? | enablePasswordRetrieval — 值為 true 時,可以從成員身份提供程序中檢索用戶密碼。 |
| ? | passwordFormat — 該屬性可能具有三個值:Clear、Encrypted 和 Hashed。當密碼被哈希后,將無法從成員身份提供程序中檢索原來的密碼。 |
| ? | requiresQuestionAndAnswer — 值為 true 時,用戶必須首先回答一個密碼檢索問題,然后才能重置或檢索用戶密碼。 |
| ? | requiresUniqueEmail — 值為 true 時,必須將唯一的電子郵件地址與各個用戶相關聯。 |
可以使用這些成員身份提供程序屬性來控制在數據庫中存儲和檢索成員身份信息的方法。可以在應用程序的 Web 配置文件中更改這些屬性的值。
例如,passwordFormat 屬性確定了在數據庫中存儲密碼的方式。您可以選擇存儲明文密碼、加密密碼或密碼哈希值。出于安全原因,您可能希望在數據庫中存儲哈希值而不是實際的密碼,以便在您的 Web 應用程序受到損害時,使黑客無法竊取實際的用戶密碼。
還要注意,您還可以通過設置 enablePasswordRetrieval 屬性,允許或禁止從數據庫中檢索用戶密碼。同樣,為了確保安全,您可能不希望允許用戶檢索他們的密碼。
返回頁首使用 Web 站點管理工具來配置安全性
ASP.NET 2.0 框架隨附的 Web 站點管理工具使您可以完全通過 Web 頁界面來配置 ASP.NET 應用程序(參見圖 2)您可以使用 Web 站點管理工具來創建和管理用戶和角色,以及控制對 Web 應用程序中文件夾和單個頁面的訪問(Web 站點管理工具還可以用來配置 Web 應用程序的若干其他方面)。
圖 2. 使用 Web 站點管理工具
有多種導航到 Web 管理界面的方法。如果您要在 Visual Studio .NET 2005 內部生成 Web 應用程序,您可以通過從 Website 菜單下選擇 ASP.NET Configuration 來打開 Web 站點管理工具。如果您要在 Visual Studio .NET 外部開發 Web 應用程序,您可以通過請求特殊的頁 WebAdmin.axd 來直接導航到 Web 站點管理工具。例如,如果您的應用程序位于本地計算機上名為 MyWebApp 的虛擬目錄中,則可以通過在 Web 瀏覽器中輸入以下 URL,打開應用程序的 Web 站點管理工具。
http://localhost/MyWebApp/WebAdmin.axd
您還可以使用這后一種方法來訪問已部署的應用程序的 Web 站點管理工具。
在幕后,Web 站點管理工具由一組 ASP.NET 頁組成,這些頁使用下一節所討論的標準 Login 控件。這些頁位于 inetpub/wwwroot/aspnet_webadmin 文件夾中。如果由于某種原因,這些文件被從服務器中意外刪除,您可以通過執行 aspnet_regiis 工具來自動重新安裝它們。還可以使用 aspnet_regiis 工具來控制對 Web 站點管理工具的訪問。例如,可以使用 aspnet_regiis 工具將對 Web 站點管理工具的訪問權限制到本地服務器。
返回頁首使用 Login 控件來創建標準安全頁
ASP.NET 2.0 包含一組與安全性有關的新控件,統稱為 Login 控件。通過利用 Login 控件,您無須編寫任何代碼,就可以創建標準的注冊、登錄和密碼恢復頁。
您還可以使用 Login 控件來向用戶顯示不同的信息,具體取決于他們的角色和當前的身份驗證狀態。例如,通過 LoginView 控件可以定義不同的模板,將其顯示給不同角色的成員。舉例來說,可以使用該控件向 Administrators 角色的成員顯示與向 Guests 角色成員顯示的不同的信息。
在幕后,Login 控件充分利用了提供程序模型。如果您已經將應用程序配置為使用 AccessMembershipProvider,則 Login 控件將自動查詢 Microsoft Access 數據庫來檢索成員身份信息。如果啟用了 SqlMembershipProvider,則這些控件將使用已配置的 SQL Server 數據庫。
在使用任何 Login 控件之前,您應該為您的應用程序啟用表單身份驗證。可以通過修改應用程序的 Web 配置文件或者通過使用 Web 站點管理工具來啟用表單身份驗證。
使用 Login 控件
Login 控件使您能夠簡單地通過向頁中添加單個標記來創建標準登錄頁。
<asp:Login ID="Login1" Runat="server" />
Login 控件會自動生成標準登錄界面。默認情況下,該界面不是非常漂亮,但您可以在 Visual Studio .NET 2005 中通過右鍵單擊 Login 控件并選擇 AutoFormat,快速地改善該控件的外觀(參見圖 3)。注意,您將獲得標準的用戶名和密碼文本框、一個“remember me”復選框以及一個提交按鈕。
圖 3. 用 Login 控件創建登錄界面
Login 控件不僅為您提供界面,而且能夠實際工作!當您通過使用 Login 控件來提交您的用戶名和密碼時,您的憑據將自動被已配置的成員身份提供程序驗證。
存在一系列與 Login 控件相關聯的、數量驚人的屬性。這些屬性中的大多數都只是使您能夠控制登錄界面的外觀的不同方面。例如,您可以使用各種 FailureText 屬性來控制登錄失敗時顯示的文本的內容和外觀。此外,您還可以使用 CreateUserUrl 和 PasswordRecoveryUrl 屬性來創建指向注冊頁和密碼恢復頁的鏈接。
Login 控件附帶的更為有價值的屬性之一是 VisibleWhenLoggedIn 屬性。該屬性使您能夠在已經對用戶進行身份驗證后自動隱藏 Login 控件。例如,您可能希望在 Web 應用程序中每個頁的頂部包含 Login 控件。通過使用 VisibleWhenLoggedIn 屬性,您可以在對用戶進行身份驗證后立即自動隱藏 Login 控件。
使用 CreateUserWizard 控件
CreateUserWizard 控件使您能夠創建標準用戶注冊頁。只是通過向頁中添加以下標記,您就可以使新用戶能夠在您的 Web 站點注冊。
<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server" />
CreateUserWizard 所生成界面的確切外觀取決于應用程序的成員身份提供程序的設置。例如,僅當默認成員身份提供程序的 requiresQuestionAndAnswer 屬性值為 true 時,密碼問題和回答的文本框才會出現。圖 4 中的注冊頁是在 CreateUserWizard 與默認的 AspNetAccessProvider 成員身份提供程序配合使用時生成的。
圖 4. 用 CreateUserWizard 控件注冊新用戶
使用 CreateUserWizard 控件能夠做的更為有趣的事情之一,是在用戶已經完成所有注冊步驟后自動發送注冊電子郵件。例如,您可以發送電子郵件以感謝用戶在您的 Web 站點注冊。該電子郵件可以包含諸如用戶的注冊用戶名和密碼之類的信息。
通過向 CreateUserWizard 控件的 MailDefinition 屬性賦值,可以配置由該控件發送的電子郵件。MailDefinition 屬性代表了 MailDefinition 類的實例,該類包含定義電子郵件所需的全部屬性。
例如,每當某個用戶完成注冊向導時,下面的 CreateUserWizard 控件都會將 RegistrationEmail.txt 文件的內容作為注冊電子郵件的正文發送(CreateUserWizard 在發送電子郵件時,使用在 Web 配置文件的 <smtpMail> 郵件節中指定的電子郵件服務器)。
<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server"><MailDefinition BodyFileName="~/RegistrationEmail.txt" From="YourSite@YourDomain.com"Subject="Thanks for registering!"></MailDefinition> </asp:CreateUserWizard>
在 RegistrationEmail.txt 文件內部,您可以使用特殊的表達式(如 <% UserName %> 和 <% Password %>),以便替換電子郵件正文內新用戶的注冊用戶名和密碼。
在更為復雜的注冊方案(您在向用戶提供對 Web 應用程序的訪問權之前,需要驗證用戶電子郵件地址的有效性)中,CreateUserWizard 控件的電子郵件功能也可能很有用。如果您啟用 CreateUserWizard 控件的 AutoGeneratePassword 屬性,則該控件將為用戶隨機生成密碼。通過利用 CreateUserWizard 控件的電子郵件功能,您可以自動將隨機生成的密碼發送給用戶。如果該用戶隨后使用已發送的密碼來對 Web 應用程序進行身份驗證,則您將知道用戶肯定已經提供了有效的電子郵件地址。
使用 PasswordRecovery 控件
PasswordRecovery 控件使 Web 應用程序的用戶能夠請求其密碼的電子郵件提醒(參見圖 5)。像 CreateUserWizard 控件一樣,您可以用 MailDefinition 屬性來定義發送給用戶的電子郵件的屬性。
圖 5. 用 PasswordRecovery 控件通過電子郵件發送密碼
例如,以下標記向頁中添加了一個 PasswordRecovery 控件,該控件從 YourSite@YourDomain.com 電子郵件帳戶發送電子郵件。
<asp:PasswordRecovery ID="PasswordRecovery1" Runat="server"><MailDefinition From="YourSite@YourDomain.com" Subject="Password Reminder"></MailDefinition></asp:PasswordRecovery>
PasswordRecovery 控件具有不同的行為,具體取決于默認成員身份提供程序的配置。當 enablePasswordRetrieval 屬性的值為 true 并且 passwordFormat 屬性的值不為 Hashed 時,將在電子郵件中發送用戶的原始明文密碼。對于其他幾乎每種屬性值組合,都會首先將密碼重置為隨機生成的字符序列,然后再將其發送給用戶。
使用 ChangePassword 控件
您可能猜到,ChangePassword 控件使用戶能夠更改他們的已注冊密碼。該控件可以呈現用于輸入原始密碼以及輸入新密碼的文本框(參見圖 6)。
圖 6. 用 ChangePassword 控件更改密碼
像 CreateUserWizard 和 PasswordRecovery 控件一樣,ChangePassword 控件包括一個 MailDefinition 屬性。如果將值賦給 MailDefinition 屬性,則 ChangePassword 控件在密碼成功更改時將自動向用戶發送一個電子郵件。
以下標記聲明了一個 ChangePassword 控件實例并設置了 MailDefinition 屬性。
<asp:ChangePassword ID="ChangePassword1" Runat="server"><MailDefinition BodyFileName="~/ChangePasswordEmail.txt" From="YourSite@YourDomain.com"Subject="Your Updated Password"></MailDefinition> </asp:ChangePassword>
BodyFileName 屬性包含特定文本文件(該文件包含被發送給用戶的電子郵件的正文)的路徑。在該文本文件內部,您可以使用特殊表達式(如 <% UserName %> 和 <% Password %>)在電子郵件中顯示用戶的注冊用戶名和已修改的密碼。
使用 LoginName 和 LoginStatus 控件
LoginName 和 LoginStatus 控件使您能夠顯示有關某個用戶的當前身份驗證狀態的信息。在某個用戶登錄到您的應用程序以后,LoginName 控件會顯示該用戶的注冊用戶名。如果用戶尚未由表單身份驗證進行身份驗證,則 LoginName 控件不會顯示任何信息。以下為在頁上聲明 LoginName 控件的方式。
<asp:LoginName ID="LoginName1" Runat="server" />
另一方面,LoginStatus 使用戶能夠登錄到您的 Web 應用程序或者注銷。該控件顯示兩個鏈接中的一個。如果用戶尚未經過身份驗證,則顯示指向 Login.aspx 頁的鏈接。如果用戶已經進行了身份驗證,則顯示使該用戶能夠注銷的鏈接。以下為聲明 LoginStatus 控件的方式。
<asp:LoginStatus ID="LoginStatus1" Runat="server" />
使用 LoginView 控件
最后一個 Login 控件 — LoginView 控件使您能夠根據當前用戶的角色顯示不同的內容。例如,許多 Web 站點根據用戶是新用戶還是注冊用戶來在其主頁上顯示不同的信息。新用戶可以概覽 Web 站點的用途,而注冊用戶可以查看專門為他們定制的信息。
以下代碼顯示了如何使用 LoginView 控件向匿名用戶顯示與向經過身份驗證的用戶顯示的不同的內容。
<asp:LoginView ID="LoginView1" Runat="server"><LoggedInTemplate>Welcome back <asp:LoginName ID="LoginName1" Runat="server" /></LoggedInTemplate><AnonymousTemplate>Welcome to our Web site! If you were a registered user, you could view some really interesting stuff right now!</AnonymousTemplate> </asp:LoginView>
匿名用戶可以查看 AnonymousTemplate 中包含的所有內容。另一方面,經過身份驗證的用戶可以查看 LoggedInTemplate 中包含的所有內容。
如果您為 Web 應用程序啟用自定義角色,則可以使用 LoginView 控件顯示只能由特定角色的成員查看的內容。例如,設想您使用 Web 站點管理工具創建了一個名為 Administrators 的新角色。在這種情況下,您可以使用 LoginView 控件顯示只能由 Administrators 角色的成員查看的內容,如下所示。
<asp:LoginView ID="LoginView1" Runat="server"><RoleGroups><asp:RoleGroup Roles="Administrators"><ContentTemplate>Secret stuff for administrators!</ContentTemplate></asp:RoleGroup></RoleGroups><LoggedInTemplate>Welcome back <asp:LoginName ID="LoginName1" Runat="server" /></LoggedInTemplate><AnonymousTemplate>Welcome to our Web site! If you were a registered user, you could view some really interesting stuff right now!</AnonymousTemplate> </asp:LoginView>
Administrators 角色的成員將能夠查看與 Administrators RoleGroup 相關聯的 <ContentTemplate> 中包含的任何內容。但是,Administrators 角色的成員將無法查看在 LoggedInTemplate 或 Anonymous 模板內部聲明的內容。即使有多個模板適用于您,您也只能查看單個模板的內容。
返回頁首直接使用 Membership API
有時候,您需要對成員身份進行更高級別(比 Web 站點管理工具或 Login 控件提供的控制級別高)的控制。在這些情況下,您可以直接使用 Membership API。
Membership API 是通過 Membership 類公開的。Membership 類包含的方法使您能夠完成以下工作:創建新用戶;更改密碼;搜索與特定條件匹配的用戶;等等。在幕后,Login 控件使用這些方法與已配置的成員身份提供程序進行交互。
下面列出了 Membership 類的一些比較重要的方法:
| ? | CreateUser — 使您能夠創建新用戶。 |
| ? | DeleteUser — 使您能夠刪除現有用戶。 |
| ? | FindUsersByEmail — 使您能夠檢索與某個特定的電子郵件地址匹配的用戶集合。 |
| ? | FindUsersByName — 使您能夠檢索與某個特定的用戶名匹配的用戶集合。 |
| ? | GeneratePassword — 使您能夠生成隨機密碼。 |
| ? | GetAllUsers — 使您能夠檢索成員身份提供程序中存儲的所有用戶。 |
| ? | GetNumberOfUsersOnline — 使您能夠返回當前正在訪問 Web 應用程序的用戶數。 |
| ? | GetUser — 使您能夠檢索與當前用戶相關聯的成員身份信息,或者使您能夠檢索與某個已經提供用戶名的用戶相關聯的成員身份信息。 |
| ? | GetUsernameByEmail — 使您能夠檢索具有某個特定電子郵件地址的用戶的用戶名。 |
| ? | UpdateUser — 使您能夠更新特定用戶的信息。 |
| ? | ValidateUser — 使您能夠根據成員身份提供程序對用戶進行身份驗證。 |
這些方法非常強大。例如,通過利用 CreateUser 方法,您可以用一行代碼創建新用戶。
// C# Membership.CreateUser( "Ruth", "Secret" );
' VB.NET Membership.CreateUser( "Ruth", "Secret" )
該語句創建了一個名為 Ruth 的新用戶,該用戶具有密碼 Secret。
有幾個 Membership 方法(如 GetAllUsers 和 FindUsersByName)返回 MembershipUser 對象的集合。MembershipUser 類表示有關特定用戶的信息。該類具有下列屬性:
| ? | Comment — 表示與該用戶相關聯的任意備注。 |
| ? | CreationDate — 表示該用戶的創建日期。 |
| ? | Email — 表示該用戶的電子郵件地址。 |
| ? | IsApproved — 表示該用戶是否已經被批準。 |
| ? | IsOnline — 表示該用戶當前是否正在訪問 Web 應用程序。 |
| ? | LastActivityDate — 表示該用戶上次訪問 Web 應用程序的日期。 |
| ? | LastLoginDate — 表示上次對該用戶進行身份驗證的日期。 |
| ? | LastPasswordChangedDate — 表示上次更改用戶密碼的日期。 |
| ? | PasswordQuestion — 表示與密碼問題和回答配合使用的密碼問題。 |
| ? | Provider — 表示成員身份提供程序。 |
| ? | Username — 表示用戶名。 |
MembershipUser 類還包含下列方法:
| ? | ChangePassword — 使您能夠更改用戶的密碼。 |
| ? | ChangePasswordQuestionAndAnswer — 使您能夠更改密碼問題和回答。 |
| ? | GetPassword — 使您能夠檢索用戶的密碼。 |
| ? | ResetPassword — 使您能夠重置用戶的密碼。 |
您可以使用 MemberUser 類的屬性來顯示有關 Web 應用程序的用戶的信息。例如,清單 1 中的 ASP.NET 頁顯示了 GridView 控件中每個用戶的用戶名、電子郵件地址、上次活動日期和聯機狀態(參見圖 7)。
圖 7. 用 Membership API 顯示成員身份信息
清單 1. DisplayMembers.aspx (C#)
<%@ Page Language="C#" %>
<script runat="server">void Page_Load() {grdUsers.DataSource = Membership.GetAllUsers();grdUsers.DataBind();
}</script><html>
<head runat="server"><title>Display Members</title>
</head>
<body>
<form runat="Server"><asp:GridView ID="grdUsers" AutoGenerateColumns="false" Runat="Server">
<Columns><asp:BoundField HeaderText="Username" DataField="Username" /><asp:BoundField HeaderText="Email" DataField="Email" /><asp:BoundField HeaderText="Last Activity Date" DataField="LastActivityDate" DataFormatString="{0:d}" /><asp:CheckBoxField HeaderText="Is Online" DataField="IsOnline" />
</Columns>
</asp:GridView></form>
</body>
</html>
清單 1. DisplayMembers.aspx (Visual Basic .NET)
<%@ Page Language="VB" %>
<script runat="server">Sub Page_Load()grdUsers.DataSource = Membership.GetAllUsers()grdUsers.DataBind()End Sub</script><html>
<head id="Head1" runat="server"><title>Display Members</title>
</head>
<body>
<form id="Form1" runat="Server"><asp:GridView ID="grdUsers" AutoGenerateColumns="false" Runat="Server">
<Columns><asp:BoundField HeaderText="Username" DataField="Username" /><asp:BoundField HeaderText="Email" DataField="Email" /><asp:BoundField HeaderText="Last Activity Date" DataField="LastActivityDate" DataFormatString="{0:d}" /><asp:CheckBoxField HeaderText="Is Online" DataField="IsOnline" />
</Columns>
</asp:GridView></form>
</body>
</html>
用戶在 Page_Load 方法內部綁定到 GridView 控件。通過使用 Membership 類的 GetAllUsers 方法檢索用戶列表。
返回頁首小結
ASP.NET 2.0 框架包含重要的新增安全性功能,能夠同時滿足 Web 站點管理員和開發人員的需要。新的 Web 站點管理工具使您能夠完全通過 Web 表單界面來創建和管理用戶。新的 Login 控件使您能夠生成標準的 Web 站點安全頁,而無須編寫一行代碼。最后,Membership API 為您提供了一組功能強大的方法,用于通過代碼操縱成員身份信息。
相關書籍
| ? | ASP.NET Unleashed |
| ? | A First Look at ASP.NET V. 2.0 |
| ? | ASP.NET 2.0 Revealed |
關于作者
Stephen Walther 撰寫了有關 ASP.NET 的最暢銷著作 — ASP.NET Unleashed他還曾是 ASP.NET Community Starter Kit(一個由 Microsoft 生產的 ASP.NET 示例應用程序)的架構師和首席開發人員。他已經通過他的公司 Superexpert (http://www.superexpert.com) 為美國各地的公司(包括 NASA 和 Microsoft)提供了 ASP.NET 培訓。
轉到原英文頁面
總結
以上是生活随笔為你收集整理的ASP.NET 2.0 中的新增安全功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再论制硬盘逻辑锁
- 下一篇: ASP.NET中实现打印