ASP.NET Web Pages WebSecurity 參考手冊

2022-09-17 18:03 更新

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


描述

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

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


WebSecurity 對象參考手冊 - 屬性

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

WebSecurity 對象參考手冊 - 方法

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

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

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

_AppStart.cshtml

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

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

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

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

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

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

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

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


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

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

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

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

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

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)容,請打開數(shù)據(jù)庫,看看里邊的每個表。


簡單的會員配置

在您使用 WebSecurity 對象時,如果您的站點沒有配置使用 ASP.NET Web Pages 會員系統(tǒng) SimpleMembership,可能會報錯。

如果托管服務(wù)提供商的服務(wù)器的配置與您本地服務(wù)器的配置不同,也可能會報錯。為了解決這個問題,請在網(wǎng)站的 Web.config 文件中添加以下元素:

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號