ASP.NET Web Pages - WebSecurity 對象

描述

WebSecurity 對象提供為 ASP.NET Web Pages 應用程序提供安全和認證。

通過 WebSecurity 對象,您能夠創建用戶賬戶、登錄和注銷,重置或更改密碼等等。

WebSecurity 對象參考手冊 - 屬性

屬性 描述
CurrentUserId 獲取當前用戶的 ID。
CurrentUserName 獲取當前用戶的名稱。
HasUserId 獲取指示當前用戶是否具有用戶 ID 的值。如果是,返回 true。
IsAuthenticated 獲取當前用戶的身份驗證狀態。

WebSecurity 對象參考手冊 - 方法

屬性 描述
ChangePassword() 更改用戶的密碼。
ConfirmAccount() 確認帳戶有效并激活該帳戶。
CreateAccount() 創建新的用戶帳戶。
CreateUserAndAccount() 創建新的用戶帳戶。
GeneratePasswordResetToken() 生成可以通過電子郵件發送給用戶的密碼重置令牌。
GetCreateDate() 返回創建指定成員資格帳戶的日期和時間。
GetPasswordChangeDate() 返回最近更改指定成員資格帳戶密碼的日期和時間。
GetPasswordFailures
SinceLastSuccess()
返回自上次成功登錄或創建成員資格帳戶以來錯誤輸入密碼的次數。
GetUserId() 基于指定用戶名返回用戶 ID。
GetUserIdFrom
PasswordResetToken ()
從密碼重置令牌中返回用戶 ID。
InitializeDatabaseConnection() 通過連接到包含用戶信息的數據庫來初始化成員資格系統。
IsAccountLockedOut() 指示指定的成員資格帳戶是否因為密碼嘗試失敗次數太多而被鎖定。
IsConfirmed() 返回一個值,指示用戶是否已經過確認的值。
IsCurrentUser() 返回一個值,指示已登錄用戶的用戶名是否與指定用戶名匹配的值。
Login() 登錄用戶。
Logout() 注銷用戶。
RequireAuthenticatedUser() 如果用戶未經過身份驗證,請將 HTTP 狀態設置為 401(未經授權)。
RequireRoles() 如果當前用戶不屬于指定的角色,請將 HTTP 狀態代碼設置為 401。
RequireUser() 如果當前用戶不是指定用戶,請將 HTTP 狀態設置為 401。
ResetPassword() 通過使用密碼重置令牌來重置密碼。
UserExists() 檢查用戶是否存在。

技術數據

名稱
Class WebMatrix.WebData.WebSecurity
Namespace WebMatrix.WebData
Assembly WebMatrix.WebData.dll

初始化 WebSecurity 數據庫

在代碼中使用 WebSecurity 對象之前,必須創建或初始化 WebSecurity 數據庫。

在 web 更目錄中,創建或編輯 _AppStart.cshtml 頁面。

在該文件中寫入以下代碼:

_AppStart.cshtml

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

網站每次啟動時都會運行以上代碼。它會對 WebSecurity 數據庫進行初始化。

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

"UserProfile" 是包含用戶配置信息的數據庫表的名稱。

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

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

最后一個參數 true 是一個邏輯值,指示應創建用戶配置文件表和成員資格表(如果它們不存在),否則 false。

提示:盡管 true 指示自動創建數據庫表,但數據庫本身不會被自動創建。它必須存在。

WebSecurity 數據庫

UserProfile 表中的每條記錄代表一個用戶,其中包括用戶 ID (主鍵)和用戶名稱(email):

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

Membership 表包含成員資格信息,比如用戶何時創建以及是否(以及何時)確認成員資格。

類似這樣(某些列未列出):

UserId 創建日期 確認
令牌
是否
確認
最后的
密碼錯誤
密碼 密碼更改
1 12.04.2012 16:12:17 NULL True NULL AFNQhWfy.... 12.04.2012 16:12:17

注釋:如果您希望看到所有列和所有內容,請通過 WebMatrix 打開數據庫,然后查看每張表。

簡單的成員資格配置

如果您的站點未配置為使用 ASP.NET Web Pages 成員資格系統 SimpleMembership,那么可能會在使用 WebSecurity 對象時出現錯誤。

如果主機提供商的配置與您的本地服務器不同,就會發生錯誤。為了解決這個問題,請在站點的 Web.config 文件中添加以下元素:

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