首页>教程>ASP.NET教程>ASP.NET Web Pages WebSecurity 对象

需要支持?

如果通过文档没办法解决您的问题,请提交工单获取我们的支持!

ASP.NET Web Pages WebSecurity 对象

内容纲要

本章我们将详细介绍 ASP.NET WebSecurity 对象

WebSecurity 对象 提供 ASP.NET Web Pages 应用程序的安全性和认证

通过 WebSecurity 对象,我们可以创建用户帐户,登录和注销用户,重置或者更改密码,以及其它更多与安全性相关的功能

WebSecurity 对象属性-下面有详细属性介绍

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

WebSecurity - CurrentUserId 属性

WebSecurity 对象的 CurrentUserId 属性是当前用户在 WebSecurity 数据库中的 ID(主键)

语法

WebSecurity.CurrentUserId

范例

C#

@{
    int value;
    value=WebSecurity.CurrentUserId;
}
<p>Current User ID is: @value</p>

VB

@Code
Dim value as Integer
value=WebSecurity.CurrentUserId
End Code
<p>Current User ID is: @value</p>

说明

CurrentUserId 属性是只读的

它不能通过代码更改

该属性用于识别 WebSecurity 数据库中用户资料表和会员表中的用户

错误和异常

如果当前没有用户登录,则 CurrentUserId 属性返回 -1

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - CurrentUserName 属性

WebSecurity 对象 CurrentUserName 属性是当前用户在 WebSecurity 数据库中用户资料表中的名称

语法

WebSecurity.CurrentUserName

范例

C#

@{
    string value;
    value = WebSecurity.CurrentUserId;
}
<p>Welcome @value</p>

VB

@Code
Dim value as String
value=WebSecurity.CurrentUserName
End Code
<p>Welcome @value</p>

说明

CurrentUserName 属性是只读的,不能通过代码更改

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - HasUserId 属性

WebSecurity 对象 HasUserId 属性是一个布尔值,指示当前用户在 WebSecurity 数据库中是否具有用户 ID

如果当前用户具有用户 ID,则该属性值是一个布尔值 true

默认是 false

语法

WebSecurity.HasUserId

范例

C#

@{
    bool value;
    value = WebSecurity.HasUserId;
}
<p>It is @value that the user has an ID</p>

VB

@Code
Dim value as Boolean
value=WebSecurity.HasUserId
End Code
<p>It is @value that the user has an ID</p>

说明

HasUserID 属性是只读的,不能通过代码更改

HasUserId 属性只验证用户是否在 WebSecurity 数据库中具有 ID

不验证用户帐户是否有效(被确认),或者用户是否已登录

你可以使用 IsConfirmed() 方法来验证用户是否已被确认

你可以使用 IsAuthenticated 属性来验证用户是否已登录

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity 属性 - IsAuthenticated

WebSecurity 对象 IsAuthenticated 属性是一个布尔值,指示当前用户是否已通过身份验证(已登录)

如果当前用户已通过身份验证,则该属性值是一个布尔值 true ,否则是 false

语法

WebSecurity.IsAuthenticated

范例

C#

if (!WebSecurity.IsAuthenticated)
{
    Response.Redirect("~/Account/Login");
}

VB

if !WebSecurity.IsAuthenticated then
    Response.Redirect("~/Account/Login")
end if

说明

IsAuthenticated 属性是只读的,不能通过代码更改

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

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()检查指定的用户是否存在

WebSecurity - ChangePassword()

WebSecurity 对象 ChangePassword() 方法为指定的用户更改密码

语法

WebSecurity.ChangePassword( userName, oldPassword, newPassword )

参数

参数类型描述
userNameString用户名
oldPasswordString用户的旧密码
newPasswordString新密码

返回值

类型描述
Boolean如果密码被更改,则返回 true,否则返回 false

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - ConfirmAccount() 方法

WebSecurity 对象 ConfirmAccount() 方法使用帐户确认令牌确认并激活帐户

语法

WebSecurity.ConfirmAccount( accountConfirmationToken )

参数

参数类型描述
accountConfirmationTokenString帐户确认令牌

返回值

类型描述
Boolean如果帐户已确认,则返回 true,否则返回 false

范例

C#

string message = "";
var confirmationToken = Request["confirmationCode"];
WebSecurity.Logout();if (!confirmationToken.IsEmpty())
{
    if (WebSecurity.ConfirmAccount(confirmationToken))
    {
        message = "Registration confirmed";

    } else {

        message = "Could not confirm your registration";
    }
}

VB

message = ""
confirmationToken = Request("confirmationCode")
WebSecurity.Logout()

if !confirmationToken.IsEmpty() then
   if WebSecurity.ConfirmAccount(confirmationToken) then
       message = "Registration Confirmed"
    else
       message = "Could not confirm your registration"
    end if

end if

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

帐户确认令牌可通过 CreateAccount() 、 CreateUserAndAccount() 或 GeneratePasswordResetToken() 方法创建

一般过程是在电子邮件中向用户发送令牌,请求用户验证身份(通过一个指向确认页面的链接)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - CreateAccount() 方法

WebSecurity 对象 CreateAccount() 方法使用用户名和密码在用户数据库中创建一个新的帐户,并且可根据需要指定用户是否必须明确地确认帐户

语法

WebSecurity.CreateAccount( username, password, requireConfirmation )

参数

参数类型描述
userNameString用户名
passwordString用户密码
requireConfirmationBoolean如果账户必须使用令牌返回值进行确认,则返回 true。默认返回 false

返回值

类型描述
String可发送给用户进行帐户确认的令牌

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

在下面的情况下, CreateAccount() 方法也抛出一个 MembershipCreateUserException 异常

  1. 用户名为空
  2. 用户名已经有一个会员帐户
  3. 密码为空
  4. 密码太长
  5. 数据库操作失败

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - CreateUserAndAccount()

WebSecurity 对象 CreateUserAndAccount() 方法使用用户名和密码在用户数据库中创建一个新的帐户,并且可根据需要指定用户是否必须明确地确认帐户

语法

WebSecurity.CreateUserAndAccount( username, password, propertyValues, requireConfirmation)

参数

参数类型描述
userNameString用户名
passwordString用户密码
propertyValuesObject一个包含额外的用户属性的字典
requireConfirmationBoolean如果账户必须使用令牌返回值进行确认,则返回 true
默认返回 false

返回值

类型描述
String可发送给用户进行帐户确认的令牌

备注

CreateUserAndAccount() 方法在 WebSecurity 数据库中的用户资料表中创建一个新的入口,然后在会员表中创建一个匹配的入口

我们可以为 requireConfirmationToken 参数传递 true 来要求用帐户必须经过用户确认

如需确认帐户,则必须从 CreateUserAndAccount() 方法获得令牌作为返回值

如果想手动维护用户资料表,并且只想为用户创建会员表入口,请调用 CreateAccount() 方法

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

在下面的情况下, CreateUserAndAccount() 方法也抛出一个 MembershipCreateUserException 异常

  1. 用户名为空
  2. 用户名已经有一个会员帐户
  3. 密码为空
  4. 密码太长
  5. 数据库操作失败

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - GeneratePasswordResetToken() 方法

WebSecurity 对象 GeneratePasswordResetToken() 方法生成一个密码重置令牌,可以在电子邮件中发送给用户以便用户可以重设密码

语法

WebSecurity.GeneratePasswordResetToken(userName, expiration)

参数

参数类型描述
userNameString用户名
expirationInteger令牌到期时间,以分钟计。默认是 1440(24 小时)

返回值

类型描述
String一个重置令牌

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

如果用户已忘记密码,请使用 ResetPassword() 方法

ResetPassword() 方法要求一个密码 重置令牌

确认令牌可通过 CreateAccount() 、 CreateUserAndAccount() 或 GeneratePasswordResetToken() 方法创建

密码可通过代码重置,但是一般过程是发送电子邮件给用户(带有令牌和指向页面的链接),这样用户就可以通过新的令牌确认新的密码

C#

@{
    newPassword = Request["newPassword"];
    confirmPassword = Request["confirmPassword"];
    token = Request["token"];

    if isPost{

        // input testing is ommitted here to save space
        retunValue = ResetPassword(token, newPassword);
    }
}

<h1>Change Password</h1>
<form method="post" action="">
    <label for="newPassword">New Password:</label>
    <input type="password" id="newPassword" name="newPassword" title="New password" />
    <label for="confirmPassword">Confirm Password:</label>
    <input type="password" id="confirmPassword" name="confirmPassword" title="Confirm new password" />
    <label for="token">Pasword Token:</label>
    <input type="text" id="token" name="token" title="Password Token" />
    <p class="form-actions">
        <input type="submit" value="Change Password" title="Change password" />
    </p>
</form>

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - GetCreateDate() 方法

WebSecurity 对象 GetCreateDate() 方法返回指定会员帐户创建的日期和时间

语法

WebSecurity.GetCreateDate( userName )

参数

参数类型描述
userNameString用户名

返回值

类型描述
DateTime会员帐户创建的日期和时间

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

如果帐户创建日期无效,则 GetCreatedDate() 方法返回 DateTime.MinValue

DateTime.MinValue 的值是 00:00:00.0000000, January 1, 0001

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity GetPasswordChangeDate()

WebSecurity 对象 GetPasswordChangeDate() 方法返回用户的密码最后更改的日期和时间

语法

WebSecurity.GetPasswordChangedDate( userName )

参数

参数类型描述
userNameString用户名

返回值

类型描述
DateTime密码最后更改的日期和时间

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

如果密码没有更改,则 GetPasswordChangeDate() 方法返回 DateTime.MinValue

DateTime.MinValue 的值是 00:00:00.0000000, January 1, 0001

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - GetUserId() 方法

WebSecurity 对象 GetUserId() 方法返回指定用户的 ID

语法

WebSecurity.GetUserId( userName )

参数

参数类型描述
userNameString用户名

返回值

类型描述
Integer用户 ID

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

用户 ID 是存储在用户数据库中的用户信息的主键

它是用于在用户资料表和会员表中识别用户

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity -InitializeDatabaseConnection()

WebSecurity 对象 InitializeDatabaseConnection() 方法初始化 WebSecurity 数据库

该方法通过连接到包含用户和会员信息的数据库来初始化 WebSecurity 系统

语法

WebSecurity.InitializeDatabaseConnection( connectionString, userTableName, userIdColumn, userNameColumn, autoCreateTables )

参数

参数类型描述
connectionStringString您的WebSecurity数据库的名称
userTableNameString包含用户资料信息的数据库表
userIdColumnString包含用户 ID(主键)的数据库列
userNameColumnString包含用户名的数据库列
autoCreateTablesBooleantrue 指示如果用户资料和会员表不存在则必须创建表,否则为 false

返回值

说明

如果使用 SQL Server Compact, connectionString ** 应该是 WebSecurity 数据库的名称(不带 .sdf 文件扩展名)

否则它应该是在 Web 配置(web.config 文件)中的连接字符串的名称

即使 autoCreateTables 会强制数据库表被自动创建,但是前提是数据库本身必须已经存在

错误和异常

在下面的情况下, InitializeDatabaseConnection() 方法抛出一个 InvalidOperationException 异常

  1. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - IsConfirmed() 方法

WebSecurity 对象 IsConfirmed() 方法返回一个指示指定用户是否已被确认的值

语法

WebSecurity.IsConfirmed( userName )

参数

参数类型描述
userNameString用户名

返回值

类型描述
Boolean如果用户已被确认,则返回 true,否则返回 false

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

IsConfirmed() 方法检查由 userName 参数标识的用户帐户

如果会员已被确认(用户通过点击电子邮件链接进行帐户确认),则该方法返回 true

如果注册未被确认,则用户无法登录

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - IsCurrentUser() 方法

WebSecurity 对象 IsCurrentUser() 方法把提供的用户名与已登录用户的用户名进行比较

语法

WebSecurity.IsCurrentUser( userName )

参数

参数类型描述
userNameString要比较的用户名

返回值

类型描述
Boolean如果 userName 匹配已登录用户,则返回 true,否则返回 false

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - Login() 方法

WebSecurity 对象 Login() 方法使用用户名和密码登录指定的用户

语法

WebSecurity.Login( userName, password, persistCookie )

参数

参数类型描述
userNameString用户名
passwordString用户密码
persistCookieStringtrue 规定 cookie 中的身份验证令牌应该在当前会话结束后继续保留,否则为 false
默认是 false

返回值

类型描述
Boolean如果用户已登录,则返回 true,否则返回 false

范例

C#

if (WebSecurity.Login(username,password))
{
    <p>Welcome</p>
}else{
    <p>Incorrect username or password.</p>
}

VB

if WebSecurity.Login(username,password)
    <p>Welcome</p>
else
    <p>Incorrect username or password</p>
end if

说明

当用户已登录,ASP.NET 在 cookie 中设置一个身份验证令牌,让 ASP.NET 知道用户已登录的后续请求

如果 persistCookie 是 false,则令牌只有在用户关闭浏览器之前才是有效的

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - Logout() 方法

WebSecurity 对象 Logout() 方法用于注销当前用户

语法

Logout()

范例

C#

// 退出登录 
WebSecurity.Logout();

// 跳转回主页
Response.Redirect("~/");

VB

'退出登录
WebSecurity.Logout()

'跳转回主页
Response.Redirect("~/")

参数

返回值

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

当用户已登录,ASP.NET 在 cookie 中设置一个身份验证令牌,让 ASP.NET 知道用户已登录的后续请求

Logout() 方法移除身份验证令牌,注销用户

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity RequireAuthenticatedUser

WebSecurity 对象 RequireAuthenticatedUser() 方法用于设置 HTTP 状态为 401(未经授权),如果如果当前用户未通过身份验证

语法

WebSecurity.RequireAuthenticatedUser()

参数

返回值

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

RequireAuthenticatedUser() 值验证当前用户是否已通过身份验证

如果当前用户未通过身份验证,则 HTTP 状态会设置为 401(未经授权)

要验证当前用户是否是指定的用户(通过 ID 或通过名称),请使用 RequireUser() 方法

要验证用户是否是角色中的成员,请使用 RequireRoles() 方法

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - RequireRoles() 方法

WebSecurity 对象 RequireRoles() 方法用于设置 HTTP 状态为 401(未经授权),如果当前用户不是所有指定角色的成员

语法

WebSecurity.RequireRoles(roles)

范例

C#

WebSecurity.RequireRoles("Admin", "Poweruser");

VB

WebSecurity.RequireRoles("Admin", "Poweruser")

参数

参数类型描述
rolesString当前用户必须属于的角色列表,以逗号分隔

返回值

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

范例

RequireRoles() 验证当前用户是否是 所有 指定角色的成员

如果当前用户不是 所有 指定角色的成员,则 HTTP 状态会设置为 401(未经授权)

要验证当前用户是否已通过身份验证,请使用 RequireAuthenticatedUser() 方法

要验证当前用户是否是指定的用户,请使用 RequireUser() 方法

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - RequireUser() 方法

WebSecurity 对象 RequireUser() 方法用于设置 HTTP 状态为 401(未经授权),如果指定的用户未登录

语法

WebSecurity.RequireUser(userId)

WebSecurity.RequireUser(userName)

参数

参数类型描述
userIDInteger用户 ID
userNameString用户名

返回值

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

RequireUser() 验证当前用户是否是指定的用户

要验证当前用户是否已通过身份验证,请使用 RequireAuthenticatedUser() 方法

要验证用户是否是角色中的成员,请使用 RequireRoles() 方法

RequireUser() 只允许指定的用户访问网页,限制页面访问的建议方法是创建一个角色,并使用 RequireRoles() 方法来验证用户是否是该角色的成员

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - ResetPassword() 方法

WebSecurity 对象 ResetPassword() 方法使用密码令牌重置用户密码

语法

WebSecurity.ResetPassword( passwordResetToken, newPassword )

参数

参数类型描述
passwordResetTokenString密码令牌
newpasswordString新密码

返回值

类型描述
Boolean如果密码已更改,则返回 true,否则返回 false

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

说明

如果用户已忘记密码,请使用 ResetPassword() 方法

ResetPassword() 方法要求一个密码 重置令牌

确认令牌可通过 CreateAccount() 、 CreateUserAndAccount() 或 GeneratePasswordResetToken() 方法创建

密码可通过代码重置,但是一般过程是发送电子邮件给用户(带有令牌和指向页面的链接),这样用户就可以通过新的令牌确认新的密码

c#

@{
    newPassword = Request["newPassword"];
    confirmPassword = Request["confirmPassword"];
    token = Request["token"];

    if isPost {
        // input testing is ommitted here to save space
        returnValue = ResetPassword(token, newPassword);
    }
}
<h1>Change Password</h1>
<form method="post" action="">
    <label for="newPassword">New Password:</label>
    <input type="password" id="newPassword" name="newPassword" title="New password" />
    <label for="confirmPassword">Confirm Password:</label>
    <input type="password" id="confirmPassword" name="confirmPassword" title="Confirm new password" />
    <label for="token">Pasword Token:</label>
    <input type="text" id="token" name="token" title="Password Token" />
    <p class="form-actions">
        <input type="submit" value="Change Password" title="Change password" />
    </p>
</form>

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

WebSecurity - UserExists() 方法

WebSecurity 对象 UserExists() 方法指示用户是否已存在于 WebSecurity 数据库中

语法

WebSecurity.UserExists( userName )

参数

参数类型描述
userNameString用户名

返回值

类型描述
Boolean如果用户已存在,则返回 true,否则返回 false

说明

UserExists() 方法只验证用户是否已存在于用户资料表中

它 不会 为用户验证会员帐户是否已存在,或者用户是否已确认,或者用户是否已登录

错误和异常

在下面的情况下,任何对 WebSecurity 对象的访问将抛出一个 InvalidOperationException 异常

  1. InitializeDatabaseConnection() 方法没有被预先调用
  2. SimpleMembership 没有初始化(或者在网站配置中禁用)

命名空间

WebMatrix.WebData

Assembly

WebMatrix.WebData.dll

技术数据

名称
ClassWebMatrix.WebData.WebSecurity
NamespaceWebMatrix.WebData
AssemblyWebMatrix.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)

UserIdEmail
1john@johnson.net
2peter@peterson.com
3lars@larson.eut

Membership 表包含会员信息,比如用户是什么时候创建的,该会员是否已认证,会员是什么时候认证的等等

UserIdCreateDateConfirmationTokenPasswordChange
112.04.2012 16:12:17NULLAFNQhWfy....

忽略了一些列的显示

如果你想看到所有的列和内容,请打开数据库,看看里边的每个表

简单的会员配置

如果我们使用了 WebSecurity 对象,但有没有没有配置使用 ASP.NET Web Pages 会员系统 SimpleMembership ,可能会报错

如果托管服务提供商的服务器的配置与我们本地服务器的配置不同,也可能会报错

为了解决这个问题,请在网站的 Web.config 文件中添加以下元素

<appSettings>
    <add key="enableSimpleMembership" value="true" />
</appSettings>
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索