gpt4 book ai didi

asp.net - 更改密码后,从所有浏览器注销用户

转载 作者:行者123 更新时间:2023-12-01 22:53:33 24 4
gpt4 key购买 nike

我有一个“重置密码”页面:enter image description here

当用户填写详细信息并单击Reset Password按钮时。以下 Controller 称为:

public ActionResult ResetPassword(ResetPassword model)
{
...
return RedirectToAction("Logout");
}

当用户更改密码时,他们将从浏览器获取 Logged Out。但是,如果它们同时登录到另一个浏览器,则它们仍将保持登录状态。

我想从他们更改密码时登录的所有浏览器中注销用户。

最佳答案

所以我回到家,决定整理一些代码。给我看看代码!

我将使用处理程序,因此验证总是在用户首次访问应用程序时完成,并且每次操作方法访问都在一个地方完成。

这个想法是,当用户重设密码时,应用程序会记录该用户已重设密码,并且首次未登录并注销该用户。

user.HasResetPassword = true;
user.IsFirstLoginAfterPasswordReset = false;

当用户登录时,应用程序将验证用户以前是否重置了密码,并且现在是第一次登录。如果这些语句有效,则应用程序将更新其记录,以表示您尚未重置密码,并且您不是第一次登录。

步骤1

向ApplicationUser模型添加两个属性

enter image description here

步骤2

使用以下实现在Models文件夹中添加AuthHandler.cs类。
在此阶段,您将验证用户是否已重设密码,并且自重设密码以来首次未登录。如果是这样,请将用户重定向到登录名。

enter image description here

步骤3

在RouteConfig.cs中,调用AuthHandler,以便为您的应用程序的每个传入的HTTP请求调用它。
enter image description here

步骤4

在ResetPassword方法中,添加以下实现。在此步骤中,当用户重设密码时,将属性更新为,即他们重设了密码并且没有首次登录。请注意,在重设密码时,用户也会被明确注销。

enter image description here

步骤5

在登录方法中,添加以下实现。在此步骤中,如果用户成功登录,请验证其密码是否已重置并且首次登录为假。如果满足所有条件,请更新数据库中的属性,以便这些属性处于准备状态,以备将来用户重置密码时使用。这样的循环确定并更新了密码重置状态,并在重置密码后首次登录。

enter image description here

最后

您的AspnetUsers表应如下所示

enter image description here

评论

这就是我的处理方式。我尚未对其进行测试,因此如果遇到异常,您可能需要对其进行修改。还用硬编码显示了解决问题的方法。

关于asp.net - 更改密码后,从所有浏览器注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com