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)前用戶的身份驗證狀態(tài)。 |
WebSecurity 對象參考手冊 - 方法
屬性 | 描述 |
---|---|
ChangePassword() | 更改用戶的密碼。 |
ConfirmAccount() | 確認(rèn)帳戶有效并激活該帳戶。 |
CreateAccount() | 創(chuàng)建新的用戶帳戶。 |
CreateUserAndAccount() | 創(chuàng)建新的用戶帳戶。 |
GeneratePasswordResetToken() | 生成可以通過電子郵件發(fā)送給用戶的密碼重置令牌。 |
GetCreateDate() | 返回創(chuàng)建指定成員資格帳戶的日期和時間。 |
GetPasswordChangeDate() | 返回最近更改指定成員資格帳戶密碼的日期和時間。 |
GetPasswordFailures SinceLastSuccess() |
返回自上次成功登錄或創(chuàng)建成員資格帳戶以來錯誤輸入密碼的次數(shù)。 |
GetUserId() | 基于指定用戶名返回用戶 ID。 |
GetUserIdFrom PasswordResetToken () |
從密碼重置令牌中返回用戶 ID。 |
InitializeDatabaseConnection() | 通過連接到包含用戶信息的數(shù)據(jù)庫來初始化成員資格系統(tǒng)。 |
IsAccountLockedOut() | 指示指定的成員資格帳戶是否因為密碼嘗試失敗次數(shù)太多而被鎖定。 |
IsConfirmed() | 返回一個值,指示用戶是否已經(jīng)過確認(rèn)的值。 |
IsCurrentUser() | 返回一個值,指示已登錄用戶的用戶名是否與指定用戶名匹配的值。 |
Login() | 登錄用戶。 |
Logout() | 注銷用戶。 |
RequireAuthenticatedUser() | 如果用戶未經(jīng)過身份驗證,請將 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)站每次啟動時都會運行以上代碼。它會對 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 表包含成員資格信息,比如用戶何時創(chuàng)建以及是否(以及何時)確認(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ù)庫,然后查看每張表。
簡單的成員資格配置
如果您的站點未配置為使用 ASP.NET Web Pages 成員資格系統(tǒng) SimpleMembership,那么可能會在使用 WebSecurity 對象時出現(xiàn)錯誤。
如果主機(jī)提供商的配置與您的本地服務(wù)器不同,就會發(fā)生錯誤。為了解決這個問題,請在站點的 Web.config 文件中添加以下元素:
<appSettings> <add key="enableSimpleMembership" value="true" /> </appSettings>