ASP.NET 网页网络安全

说明

WebSecurity 对象为 ASP.NET 网页应用程序提供安全和身份验证。

使用 WebSecurity 对象,您可以创建用户帐户、登录和注销用户、重置或更改密码等等。


WebSecurity 对象参考 - 属性

属性 描述
CurrentUserId 获取当前用户的 ID
CurrentUserName 获取当前用户的名字
HasUserId 如果当前有用户 ID,则返回 true
IsAuthenticated 如果当前用户已登录,则返回 true

WebSecurity 对象参考 - 方法

方法 描述
ChangePassword() 更改用户密码
ConfirmAccount() 使用确认令牌确认帐户
CreateAccount() 创建一个新的用户帐户
CreateUserAndAccount() 创建一个新的用户帐户
GeneratePasswordResetToken() 生成一个可以通过电子邮件发送给用户的令牌
GetCreateDate() 获取指定成员的创建时间
GetPasswordChangeDate() 获取密码更改的日期和时间
GetUserId() 从用户名中获取用户 ID
InitializeDatabaseConnection() 初始化 WebSecurity 系统(数据库)
IsConfirmed() 检查用户是否被确认
IsCurrentUser() 检查当前用户是否匹配用户名
Login() 通过在 cookie 中设置令牌来登录用户
Logout() 通过删除令牌 cookie 将用户注销
RequireAuthenticatedUser() 如果用户不是认证用户则退出页面
RequireRoles() 如果用户不属于指定角色,则退出页面
RequireUser() 如果用户不是指定用户则退出页面
ResetPassword() 使用令牌更改用户密码
UserExists() 检查给定用户是否存在


初始化网络安全数据库

您必须先创建或初始化 WebSecurity 数据库,然后才能在代码中使用 WebSecurity 对象。

在您网站的根目录中,创建一个名为 _AppStart.cshtml 的页面(或编辑该页面)。

将以下代码放入文件中:

_AppStart.cshtml

@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
}

上述代码将在网站(应用程序)每次启动时运行。 它初始化 WebSecurity 数据库。

"Users" 是 WebSecurity 数据库 (Users.sdf) 的名称。

"UserProfile"是包含用户个人资料信息的数据库表的名称。

"UserId" 是包含用户 ID(主键)的列的名称。

"Email" 是包含用户名的列的名称。

最后一个参数true是一个布尔值,表示如果用户配置文件和成员表不存在则自动创建,否则false

虽然true表示自动创建数据库表,数据库本身不会自动创建。 它必须存在。


网络安全数据库

UserProfile 表包含每个用户的一条记录,带有用户 ID(主键)和用户名(电子邮件):

UserId Email
1 john@johnson.net
peter@peterson.com
3 lars@larson.eut

成员资格表将包含有关何时创建用户以及是否(以及何时)确认成员资格的成员资格信息。

很像这样(有些列没有显示):

User
Id
Create
Date
Confirmation
Token
Is
Confirmed
Last
Password
Failure
Password Password
Change
1 12.04.2012 16:12:17 NULL True NULL AFNQhWfy.... 12.04.2012 16:12:17

简单的会员配置

如果您的站点未配置为使用 ASP.NET 网页会员系统 SimpleMembership,则使用 WebSecurity 对象可能会出错。

如果托管服务提供商的服务器配置与您的本地服务器不同,则可能会发生这种情况。 要解决此问题,请将以下元素添加到站点的 Web.config 文件中:

<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>