我的用户表(我创建的表)包含以下列:
UserId,UserName,FirstName,LastName,DOB
我运行此命令后
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);
它为我创建了所需的简单会员表。
我将如何进行" UnConfirming"用户或设置" IsConfirmed"使用新的SimpleMembership API在webpages_Membership中将其标记为false?
(之前,在使用"成员资格&#34之前使用简单会员之前;我可以使用api调用更新用户:Membership.UpdateUser(user);)
答案 0 :(得分:1)
我无法直接回答你的问题,因为我无法找到一种方法来“确认”一个帐户。然而,我最终做的事情可能会帮助那些发现这个问题的人。
我基本上使用Roles作为守门人。每当我创建一个新帐户时,我都会将该用户添加到“用户”角色:
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");
这样,如果用户回来,我可以通过将其添加回用户来重新激活他们的帐户。
答案 1 :(得分:1)
我最终做的是直接通过SQL查询更新该表。不确定这是否是推荐的做法,但这似乎对我有用。 (也感谢您的建议。)
答案 2 :(得分:1)
请查看此blog post on adding email confirmation to SimpleMembership registration process,其中介绍了确认流程的工作原理。悬崖说明是,当您创建新用户时,您可以设置要使用此类确认的标记。
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之前,用户将无法登录。
答案 3 :(得分:-1)
将requireConfirmationToken设为true :(第4个值如下所示)
WebSecurity.CreateUserAndAccount(viewModel.UserName, viewModel.Password, null, true);
来源 http://www.w3schools.com/aspnet/met_websecurity_createuserandaccount.asp