ASP.NET Web Pages - WebSecurity 對象
描述
WebSecurity 對象提供為 ASP.NET Web Pages 應(yīng)用程序提供安全和認(rèn)證。
通過 WebSecurity 對象,您能夠創(chuàng)建用戶賬戶、登錄和注銷,重置或更改密碼等等。
WebSecurity 對象參考手冊 - 屬性
| 屬性 | 描述 |
|---|---|
| CurrentUserId | 獲取當(dāng)前用戶的 ID。 |
| CurrentUserName | 獲取當(dāng)前用戶的名稱。 |
| HasUserId | 獲取指示當(dāng)前用戶是否具有用戶 ID 的值。如果是,返回 true。 |
| IsAuthenticated | 獲取當(dāng)前用戶的身份驗(yàn)證狀態(tài)。 |
WebSecurity 對象參考手冊 - 方法
| 屬性 | 描述 |
|---|---|
| ChangePassword() | 更改用戶的密碼。 |
| ConfirmAccount() | 確認(rèn)帳戶有效并激活該帳戶。 |
| CreateAccount() | 創(chuàng)建新的用戶帳戶。 |
| CreateUserAndAccount() | 創(chuàng)建新的用戶帳戶。 |
| GeneratePasswordResetToken() | 生成可以通過電子郵件發(fā)送給用戶的密碼重置令牌。 |
| GetCreateDate() | 返回創(chuàng)建指定成員資格帳戶的日期和時(shí)間。 |
| GetPasswordChangeDate() | 返回最近更改指定成員資格帳戶密碼的日期和時(shí)間。 |
| GetPasswordFailures SinceLastSuccess() |
返回自上次成功登錄或創(chuàng)建成員資格帳戶以來錯誤輸入密碼的次數(shù)。 |
| GetUserId() | 基于指定用戶名返回用戶 ID。 |
| GetUserIdFrom PasswordResetToken () |
從密碼重置令牌中返回用戶 ID。 |
| InitializeDatabaseConnection() | 通過連接到包含用戶信息的數(shù)據(jù)庫來初始化成員資格系統(tǒng)。 |
| IsAccountLockedOut() | 指示指定的成員資格帳戶是否因?yàn)槊艽a嘗試失敗次數(shù)太多而被鎖定。 |
| IsConfirmed() | 返回一個值,指示用戶是否已經(jīng)過確認(rèn)的值。 |
| IsCurrentUser() | 返回一個值,指示已登錄用戶的用戶名是否與指定用戶名匹配的值。 |
| Login() | 登錄用戶。 |
| Logout() | 注銷用戶。 |
| RequireAuthenticatedUser() | 如果用戶未經(jīng)過身份驗(yàn)證,請將 HTTP 狀態(tài)設(shè)置為 401(未經(jīng)授權(quán))。 |
| RequireRoles() | 如果當(dāng)前用戶不屬于指定的角色,請將 HTTP 狀態(tài)代碼設(shè)置為 401。 |
| RequireUser() | 如果當(dāng)前用戶不是指定用戶,請將 HTTP 狀態(tài)設(shè)置為 401。 |
| ResetPassword() | 通過使用密碼重置令牌來重置密碼。 |
| UserExists() | 檢查用戶是否存在。 |
技術(shù)數(shù)據(jù)
| 名稱 | 值 |
|---|---|
| Class | WebMatrix.WebData.WebSecurity |
| Namespace | WebMatrix.WebData |
| Assembly | WebMatrix.WebData.dll |
初始化 WebSecurity 數(shù)據(jù)庫
在代碼中使用 WebSecurity 對象之前,必須創(chuàng)建或初始化 WebSecurity 數(shù)據(jù)庫。
在 web 更目錄中,創(chuàng)建或編輯 _AppStart.cshtml 頁面。
在該文件中寫入以下代碼:
_AppStart.cshtml
@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email",
true);
}
網(wǎng)站每次啟動時(shí)都會運(yùn)行以上代碼。它會對 WebSecurity 數(shù)據(jù)庫進(jìn)行初始化。
"Users" 是 WebSecurity 數(shù)據(jù)庫的名稱。(Users.sdf)
"UserProfile" 是包含用戶配置信息的數(shù)據(jù)庫表的名稱。
"UserId" 包含用戶 ID 的列的名稱(主鍵)。
"Email" 是包含用戶名稱的列名。
最后一個參數(shù) true 是一個邏輯值,指示應(yīng)創(chuàng)建用戶配置文件表和成員資格表(如果它們不存在),否則 false。
提示:盡管 true 指示自動創(chuàng)建數(shù)據(jù)庫表,但數(shù)據(jù)庫本身不會被自動創(chuàng)建。它必須存在。
WebSecurity 數(shù)據(jù)庫
UserProfile 表中的每條記錄代表一個用戶,其中包括用戶 ID (主鍵)和用戶名稱(email):
| UserId | |
|---|---|
| 1 | john@johnson.net |
| 2 | peter@peterson.com |
| 3 | lars@larson.eut |
Membership 表包含成員資格信息,比如用戶何時(shí)創(chuàng)建以及是否(以及何時(shí))確認(rèn)成員資格。
類似這樣(某些列未列出):
| UserId | 創(chuàng)建日期 | 確認(rèn) 令牌 |
是否 確認(rèn) |
最后的 密碼錯誤 |
密碼 | 密碼更改 |
|---|---|---|---|---|---|---|
| 1 | 12.04.2012 16:12:17 | NULL | True | NULL | AFNQhWfy.... | 12.04.2012 16:12:17 |
注釋:如果您希望看到所有列和所有內(nèi)容,請通過 WebMatrix 打開數(shù)據(jù)庫,然后查看每張表。
簡單的成員資格配置
如果您的站點(diǎn)未配置為使用 ASP.NET Web Pages 成員資格系統(tǒng) SimpleMembership,那么可能會在使用 WebSecurity 對象時(shí)出現(xiàn)錯誤。
如果主機(jī)提供商的配置與您的本地服務(wù)器不同,就會發(fā)生錯誤。為了解決這個問題,請?jiān)谡军c(diǎn)的 Web.config 文件中添加以下元素:
<appSettings> <add key="enableSimpleMembership" value="true" /> </appSettings>