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>