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>