ASP.NET Web Pages - WebSecurity 對(duì)象


描述

WebSecurity 對(duì)象提供 ASP.NET Web Pages 應(yīng)用程序的安全性和認(rèn)證。

通過 WebSecurity 對(duì)象,您可以創(chuàng)建用戶帳戶,登錄和注銷用戶,重置或者更改密碼,以及其他更多與安全性相關(guān)的功能。


WebSecurity 對(duì)象參考手冊(cè) - 屬性

屬性描述
CurrentUserId 獲取當(dāng)前登錄用戶的 ID。
CurrentUserName獲取當(dāng)前登錄用戶的名稱。
HasUserId如果當(dāng)前有用戶 ID,則返回 true。
IsAuthenticated如果當(dāng)前用戶是登錄的,則返回 true。

WebSecurity 對(duì)象參考手冊(cè) - 方法

方法描述
ChangePassword()為指定的用戶更改密碼。
ConfirmAccount()使用帳戶確認(rèn)令牌確認(rèn)帳戶。
CreateAccount()創(chuàng)建一個(gè)新的用戶帳戶。
CreateUserAndAccount()創(chuàng)建一個(gè)新的用戶帳戶。
GeneratePasswordResetToken()生成一個(gè)密碼重置令牌,可以在電子郵件中發(fā)送給用戶以便用戶可以重設(shè)密碼。
GetCreateDate()獲取指定會(huì)員創(chuàng)建的時(shí)間。
GetPasswordChangeDate()獲取密碼變更的日期和時(shí)間。
GetUserId()根據(jù)用戶名稱獲取用戶 ID。
InitializeDatabaseConnection()初始化 WebSecurity 系統(tǒng)(數(shù)據(jù)庫)。
IsConfirmed()檢查用戶是否已被確認(rèn)。如果已確認(rèn),則返回 true。(例如,可通過電子郵件進(jìn)行確認(rèn)。)
IsCurrentUser()檢查當(dāng)前用戶的名稱是否與指定用戶名匹配。如果匹配,則返回 true。
Login()設(shè)置身份驗(yàn)證令牌,登錄用戶。
Logout()移除身份驗(yàn)證令牌,注銷用戶。
RequireAuthenticatedUser()如果用戶未通過身份驗(yàn)證,則設(shè)置 HTTP 狀態(tài)為 401(未經(jīng)授權(quán))。
RequireRoles()如果當(dāng)前用戶不是指定角色的成員,則設(shè)置 HTTP 狀態(tài)為 401(未經(jīng)授權(quán))。
RequireUser()如果當(dāng)前用戶不是指定用戶名的用戶,則設(shè)置 HTTP 狀態(tài)為 401(未經(jīng)授權(quán))。
ResetPassword()如果密碼重置令牌是有效的,改變用戶的密碼為新密碼。
UserExists()檢查指定的用戶是否存在。


技術(shù)數(shù)據(jù)

名稱
ClassWebMatrix.WebData.WebSecurity
NamespaceWebMatrix.WebData
AssemblyWebMatrix.WebData.dll


初始化 WebSecurity 數(shù)據(jù)庫

如果您想在您的代碼中使用 WebSecurity 對(duì)象,首先您必須創(chuàng)建或者初始化 WebSecurity 數(shù)據(jù)庫。

在您的 Web 根目錄下,創(chuàng)建一個(gè)名為 _AppStart.cshtml 的頁面(如果已存在,則直接編輯頁面)。

將下面的代碼復(fù)制到文件中:

_AppStart.cshtml

@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
}

上面的代碼將在每次網(wǎng)站(應(yīng)用程序)啟動(dòng)時(shí)運(yùn)行。它初始化了 WebSecurity 數(shù)據(jù)庫。

"Users" 是 WebSecurity 數(shù)據(jù)庫(Users.sdf)的名稱。

"UserProfile" 是包含用戶配置信息的數(shù)據(jù)庫表的名稱。

"UserId" 是包含用戶 ID(主鍵)的列的名稱。

"Email" 是包含用戶名的列的名稱。

最后一個(gè)參數(shù) true 是一個(gè)布爾值,表示如果用戶配置表和會(huì)員表不存在,則會(huì)自動(dòng)創(chuàng)建表。如果不想自動(dòng)創(chuàng)建表,應(yīng)設(shè)置參數(shù)為 false。

lamp.gif雖然 true 表示自動(dòng)創(chuàng)建數(shù)據(jù)庫 ,但是數(shù)據(jù)庫不會(huì)被自動(dòng)創(chuàng)建。所以數(shù)據(jù)庫必須存在。


WebSecurity 數(shù)據(jù)庫

UserProfile 表為每個(gè)用戶創(chuàng)建保存一條記錄,用戶 ID(主鍵)和用戶名字(email):

UserIdEmail
1john@johnson.net
2peter@peterson.com
3lars@larson.eut

Membership 表包含會(huì)員信息,比如用戶是什么時(shí)候創(chuàng)建的,該會(huì)員是否已認(rèn)證,會(huì)員是什么時(shí)候認(rèn)證的,等等。

具體如下所示(一些列不顯示):

User
Id
Create
Date
Confirmation
Token
Is
Confirmed
Last
Password
Failure
PasswordPassword
Change
112.04.2012 16:12:17NULLTrueNULLAFNQhWfy....12.04.2012 16:12:17

注釋:如果您想看到所有的列和內(nèi)容,請(qǐng)打開數(shù)據(jù)庫,看看里邊的每個(gè)表。


簡單的會(huì)員配置

在您使用 WebSecurity 對(duì)象時(shí),如果您的站點(diǎn)沒有配置使用 ASP.NET Web Pages 會(huì)員系統(tǒng) SimpleMembership,可能會(huì)報(bào)錯(cuò)。

如果托管服務(wù)提供商的服務(wù)器的配置與您本地服務(wù)器的配置不同,也可能會(huì)報(bào)錯(cuò)。為了解決這個(gè)問題,請(qǐng)?jiān)诰W(wǎng)站的 Web.config 文件中添加以下元素:

<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>