Asp.net mvc 4 SimpleMembership更新;“已确认”;旗帜
My Users表(我创建的表)包含以下列:Asp.net mvc 4 SimpleMembership更新;“已确认”;旗帜,asp.net-mvc-4,security,simplemembership,Asp.net Mvc 4,Security,Simplemembership,My Users表(我创建的表)包含以下列: UserId,UserName,FirstName,LastName,DOB 在我运行这个命令之后 WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true); 它为我创建了所需的简单成员表 我如何使用新的SimpleMembership API在网页中“取消确认”用户或将“
UserId,UserName,FirstName,LastName,DOB
在我运行这个命令之后
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);
它为我创建了所需的简单成员表
我如何使用新的SimpleMembership API在网页中“取消确认”用户或将“IsConfirmed”标志设置为false
(之前,在使用“Membership”类进入simplemembership之前,我可以使用api调用更新用户:Membership.UpdateUser(user);)我无法直接回答您的问题,因为我也无法找到“取消确认”帐户的方法。然而,我最后所做的可能会帮助找到这个问题的人 我基本上是一个守门员。无论何时创建新帐户,我都会将该用户添加到“用户”角色: 我使用Authorize属性来限制对控制器的访问(并对我想要公开的操作使用[AllowAnonymous],例如RegisterUser)。然后,在每个操作中,我添加了一个方法,将访问权限限制为只有“用户”角色的用户 注意:我使用的是Web API,但如果您使用的是MVC,您应该会轻松得多。您可以使用authorize属性,而不是手动检查用户是否在每个操作中扮演角色:
[Authorize(Roles = "User")]
当我想“取消确认”一个用户时,我只是将其从“用户”角色中删除
这样,如果用户爬回来,我可以通过将他们添加回用户身份来重新激活他们的帐户。我最终做的是通过SQL查询直接更新该表。不确定这是否是推荐的方法,但这似乎对我很有效。
(也感谢您的建议)。将RequiredConfirmationToken设置为true:(下面显示的第四个值) 来源 看看这个,它涵盖了确认流程的工作原理。cliff注意到,当您创建一个新用户时,您设置了一个标志,您希望像这样使用确认
string confirmationToken =
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true);
[AllowAnonymous]
public ActionResult RegisterConfirmation(string Id)
{
if (WebSecurity.ConfirmAccount(Id))
{
return RedirectToAction("ConfirmationSuccess");
}
return RedirectToAction("ConfirmationFailure");
}
执行此操作时,CreateUserAndAccount方法将返回一个唯一的令牌,您可以将该令牌放入带有链接的电子邮件中,以便用户可以确认他们为您提供了有效的电子邮件地址。当他们点击链接时,它将传递URL中的令牌,然后控制器操作可以像这样确认令牌
string confirmationToken =
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true);
[AllowAnonymous]
public ActionResult RegisterConfirmation(string Id)
{
if (WebSecurity.ConfirmAccount(Id))
{
return RedirectToAction("ConfirmationSuccess");
}
return RedirectToAction("ConfirmationFailure");
}
confirAccount方法检查数据库中是否有匹配的未确认令牌,如果有,则将isConfirmed标志设置为true。在设置为true之前,用户将无法登录。首先,但更重要的是,这并不能回答问题如何“取消确认”用户或将“isconfired”标志设置为false
string confirmationToken =
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, true);
[AllowAnonymous]
public ActionResult RegisterConfirmation(string Id)
{
if (WebSecurity.ConfirmAccount(Id))
{
return RedirectToAction("ConfirmationSuccess");
}
return RedirectToAction("ConfirmationFailure");
}