ASP.NET Web Pages WebSecurity 对象
本章我们将详细介绍 ASP.NET 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 的页面,如果已存在,则直接编辑页面
添加以下内容到文件中
@{ 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 | CreateDate | ConfirmationToken | PasswordChange |
|---|---|---|---|
| 1 | 12.04.2012 16:12:17 | NULL | AFNQhWfy.... |
忽略了一些列的显示
如果你想看到所有的列和内容,请打开数据库,看看里边的每个表
简单的会员配置
如果我们使用了 WebSecurity 对象,但有没有没有配置使用 ASP.NET Web Pages 会员系统 SimpleMembership ,可能会报错
如果托管服务提供商的服务器的配置与我们本地服务器的配置不同,也可能会报错
为了解决这个问题,请在网站的 Web.config 文件中添加以下元素
<appSettings> <add key="enableSimpleMembership" value="true" /> </appSettings>