Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 SimpleMembership更新;“已确认”;旗帜_Asp.net Mvc 4_Security_Simplemembership - Fatal编程技术网

Asp.net mvc 4 SimpleMembership更新;“已确认”;旗帜

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在网页中“取消确认”用户或将“

My Users表(我创建的表)包含以下列:

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");
}