ASP.NET Web Pages - WebSecurity 对象
描述
WebSecurity 对象提供为 ASP.NET Web Pages 应用程序提供安全和认证。
通过 WebSecurity 对象,您能够创建用户账户、登录和注销,重置或更改密码等等。
WebSecurity 对象参考手册 - 属性
| 属性 | 描述 | 
|---|---|
| CurrentUserId | 获取当前用户的 ID。 | 
| CurrentUserName | 获取当前用户的名称。 | 
| HasUserId | 获取指示当前用户是否具有用户 ID 的值。如果是,返回 true。 | 
| IsAuthenticated | 获取当前用户的身份验证状态。 | 
WebSecurity 对象参考手册 - 方法
| 属性 | 描述 | 
|---|---|
| ChangePassword() | 更改用户的密码。 | 
| ConfirmAccount() | 确认帐户有效并激活该帐户。 | 
| CreateAccount() | 创建新的用户帐户。 | 
| CreateUserAndAccount() | 创建新的用户帐户。 | 
| GeneratePasswordResetToken() | 生成可以通过电子邮件发送给用户的密码重置令牌。 | 
| GetCreateDate() | 返回创建指定成员资格帐户的日期和时间。 | 
| GetPasswordChangeDate() | 返回最近更改指定成员资格帐户密码的日期和时间。 | 
| GetPasswordFailures SinceLastSuccess() | 返回自上次成功登录或创建成员资格帐户以来错误输入密码的次数。 | 
| GetUserId() | 基于指定用户名返回用户 ID。 | 
| GetUserIdFrom PasswordResetToken () | 从密码重置令牌中返回用户 ID。 | 
| InitializeDatabaseConnection() | 通过连接到包含用户信息的数据库来初始化成员资格系统。 | 
| IsAccountLockedOut() | 指示指定的成员资格帐户是否因为密码尝试失败次数太多而被锁定。 | 
| IsConfirmed() | 返回一个值,指示用户是否已经过确认的值。 | 
| IsCurrentUser() | 返回一个值,指示已登录用户的用户名是否与指定用户名匹配的值。 | 
| 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。
提示:尽管 true 指示自动创建数据库表,但数据库本身不会被自动创建。它必须存在。
WebSecurity 数据库
UserProfile 表中的每条记录代表一个用户,其中包括用户 ID (主键)和用户名称(email):
| UserId | |
|---|---|
| 1 | john@johnson.net | 
| 2 | peter@peterson.com | 
| 3 | lars@larson.eut | 
Membership 表包含成员资格信息,比如用户何时创建以及是否(以及何时)确认成员资格。
类似这样(某些列未列出):
| UserId | 创建日期 | 确认 令牌 | 是否 确认 | 最后的 密码错误 | 密码 | 密码更改 | 
|---|---|---|---|---|---|---|
| 1 | 12.04.2012 16:12:17 | NULL | True | NULL | AFNQhWfy.... | 12.04.2012 16:12:17 | 
注释:如果您希望看到所有列和所有内容,请通过 WebMatrix 打开数据库,然后查看每张表。
简单的成员资格配置
如果您的站点未配置为使用 ASP.NET Web Pages 成员资格系统 SimpleMembership,那么可能会在使用 WebSecurity 对象时出现错误。
如果主机提供商的配置与您的本地服务器不同,就会发生错误。为了解决这个问题,请在站点的 Web.config 文件中添加以下元素:
<appSettings> <add key="enableSimpleMembership" value="true" /> </appSettings>