Web Pages 安全
ASP.NET Web Pages - WebSecurity 物件
#描述
WebSecurity 物件提供ASP. NET Web Pages 應用程式的安全性和認證。
透過 WebSecurity 對象,您可以建立使用者帳戶,登入和登出用戶,重設或變更密碼,以及其他更多與安全相關的功能。
WebSecurity 物件參考手冊- 屬性
#屬性 | 描述 |
---|---|
CurrentUserId | 取得目前登入使用者的 ID。 |
CurrentUserName | 取得目前登入使用者的名稱。 |
HasUserId | 如果目前有使用者 ID,則傳回 true。 |
IsAuthenticated | 如果目前使用者是登入的,則傳回 true。 |
WebSecurity 物件參考手冊- 方法
方法 | 描述 |
---|---|
ChangePassword() | 為指定的使用者變更密碼。 |
ConfirmAccount() | 使用帳戶確認令牌確認帳戶。 |
CreateAccount() | 建立一個新的使用者帳戶。 |
CreateUserAndAccount() | 建立一個新的使用者帳戶。 |
GeneratePasswordResetToken() | 產生一個密碼重設令牌,可以在電子郵件中傳送給使用者以便使用者可以重設密碼。 |
GetCreateDate() | 取得指定會員建立的時間。 |
GetPasswordChangeDate() | 取得密碼變更的日期和時間。 |
GetUserId() | 根據使用者名稱取得使用者 ID。 |
InitializeDatabaseConnection() | 初始化 WebSecurity 系統(資料庫)。 |
IsConfirmed() | 檢查使用者是否已被確認。如果已確認,則傳回 true。 (例如,可透過電子郵件進行確認。) |
IsCurrentUser() | 檢查目前使用者的名稱是否與指定使用者名稱相符。如果匹配,則傳回 true。 |
Login() | 設定驗證令牌,登入使用者。 |
Logout() | 移除驗證令牌,登出使用者。 |
RequireAuthenticatedUser() | 如果使用者未通過驗證,則設定 HTTP 狀態為 401(未經授權)。 |
RequireRoles() | 如果目前使用者不是指定角色的成員,則設定 HTTP 狀態為 401(未經授權)。 |
RequireUser() | 如果目前使用者不是指定使用者名稱的用戶,則設定 HTTP 狀態為 401(未經授權)。 |
ResetPassword() | 如果密碼重設令牌是有效的,改變使用者的密碼為新密碼。 |
UserExists() | 檢查指定的使用者是否存在。 |
技術資料
初始化 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 | |
---|---|
1 | john@johnson.net |
2 | peter@peterson.com |
3 | lars@ larson.eut |
Membership 表包含會員訊息,例如使用者是什麼時候創建的,該會員是否已認證,會員是什麼時候認證的,等等。
具體如下所示(有些列不會顯示):
User | #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 |
註解:如果您想看到所有的欄位和內容,請開啟資料庫,看看裡邊的每個表。
簡單的會員設定
在您使用WebSecurity 物件時,如果您的網站沒有設定使用ASP.NET Web Pages 會員系統SimpleMembership,可能會報錯誤。
如果託管服務提供者的伺服器的配置與您本機伺服器的配置不同,也可能會報錯。為了解決這個問題,請在網站的Web.config 檔案中加入以下元素:
<add key="enableSimpleMembership" value="true" />
</appSettings>