第3章 第2节 WebPages 安全

推荐给朋友

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 Email
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>