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() 检查指定的用户是�存在。


技术数�

�称 值
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。

lamp 虽然 true 表示自动创建数�库 表,但是数�库�会被自动创建。所以数�库必须存在。


WebSecurity 数�库

UserProfile 表为�个用户创建�存一�记录,用户 ID(主键)和用户�字(email):

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

Membership 表包�会员信�,比如用户是什么时候创建的,该会员是�已认�,会员是什么时候认�的,等等。

具体如下所示(一些列�显示):

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

注释:如果您想看到所有的列和内容,请打开数�库,看看里边的�个表。


简�的会员�置

在您使用 WebSecurity 对象时,如果您的站点没有�置使用 ASP.NET Web Pages 会员系统 SimpleMembership,�能会报错。

如果托管�务�供商的�务器的�置与您本地�务器的�置��,也�能会报错。为了解决这个问题,请在网站的 Web.config 文件中添加以下元素:

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