ASP.NET Web Pages WebSecurity 參考手冊(cè)

2022-09-17 18:03 更新

ASP.NET Web Pages 應(yīng)用程序的安全與認(rèn)證通過 WebSecurity 對(duì)象保證,本節(jié)為你介紹了 WebSecurity 對(duì)象的屬性、方法以及相關(guān)的使用。


描述

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ù)

名稱
Class WebMatrix.WebData.WebSecurity
Namespace WebMatrix.WebData
Assembly WebMatrix.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 雖然 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):

UserId Email
1 john@johnson.net
2 peter@peterson.com
3 lars@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
Password Password
Change
1 12.04.2012 16:12:17 NULL True NULL AFNQhWfy.... 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>

以上就是有關(guān) WebSecurity 對(duì)象的介紹。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)