0

我的用户表(我创建的那个)具有以下列:

UserId,UserName,FirstName,LastName,DOB

在我运行这个命令之后

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);

它为我创建了所需的简单成员表。

我将如何使用新的 SimpleMembership API 在 pages_Membership 中“取消确认”用户或将“IsConfirmed”标志设置为 false?

(之前,在使用“Membership”类进入 simplemembership 之前,我可以使用 api 调用更新用户:Membership.UpdateUser(user);)

4

4 回答 4

1

我最终做的是通过 SQL 查询直接更新该表。不确定这是否是推荐的方法,但这似乎对我有用。(也感谢您的建议)。

于 2013-01-15T17:39:38.803 回答
1

查看这篇关于将电子邮件确认添加到 SimpleMembership 注册过程的博客文章,其中介绍了确认过程的工作原理。悬崖笔记是,当您创建一个新用户时,您设置了您想要使用确认的标志,就像这样。

string confirmationToken = 
   WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true);

当您执行此操作时,CreateUserAndAccount 方法会返回一个唯一令牌,您可以将其放入带有链接的电子邮件中,以便用户可以确认他们为您提供了有效的电子邮件地址。当他们单击链接时,它会在 URL 中传递令牌,然后控制器操作可以像这样确认令牌。

[AllowAnonymous]
public ActionResult RegisterConfirmation(string Id)
{
    if (WebSecurity.ConfirmAccount(Id))
    {
        return RedirectToAction("ConfirmationSuccess");
    }
    return RedirectToAction("ConfirmationFailure");
}

ConfirmAccount 方法检查数据库中是否存在匹配的未确认令牌,如果存在则将 isConfirmed 标志设置为 true。在设置为 true 之前,用户将无法登录。

于 2013-02-20T13:47:11.837 回答
1

我无法直接回答您的问题,因为我也找不到“取消确认”帐户的方法。然而,我最终做的事情可能会帮助找到这个问题的人。

我基本上使用角色作为看门人。每当我创建一个新帐户时,我都会将该用户添加到“用户”角色中:

Roles.AddUserToRole(newUser.Username, "User");

我使用 Authorize 属性来限制对我的控制器的访问(并将 [AllowAnonymous] 用于我想要公开的操作——例如 RegisterUser)。然后,在每个操作中,我添加了一个方法来限制只有“用户”角色的用户才能访问。

if (!Roles.IsUserInRole(role))
{
    throw new HttpResponseException(
        new HttpResponseMessage(HttpStatusCode.Unauthorized));
}

注意:我使用的是 Web API,但如果你使用的是 MVC,你应该会更轻松。您可以使用 authorize 属性,而不是手动检查用户是否在每个操作中担任角色:

[Authorize(Roles = "User")]

当我想“取消确认”用户时,我只需将他们从“用户”角色中删除。

Roles.RemoveUserFromRole(user.Username, "User");

这样,如果用户回来爬网,我可以通过将他们重新添加为用户来重新激活他们的帐户。

于 2013-01-11T21:46:07.447 回答
-1

将 requireConfirmationToken 设置为 true:(如下所示的第 4 个值)

WebSecurity.CreateUserAndAccount(viewModel.UserName, viewModel.Password, null, true);

来源 http://www.w3schools.com/aspnet/met_websecurity_createuserandaccount.asp

于 2013-02-20T10:46:28.337 回答