ASP.NET如何在密码重置/更改时注销用户所有会话

bqjvbblv  于 2023-03-20  发布在  .NET
关注(0)|答案(2)|浏览(150)

作为一个管理员,我可以为所有用户重置密码。我可以知道如何注销特定用户的“所有”会话在所有设备/PC当我重置他的密码?
示例:
1)User 1登录到PC 1、PC 2和PC 3。
2)管理员重置/更改用户1的密码。
3)PC 1、PC 2和PC 3中的系统注销会话。
在ASP.NET中怎样才能做到呢?
谢谢。

7cwmlq89

7cwmlq891#

这是可能的,FacebookG mail是这样做的,但这并不简单
在检查Session_Start上的用户的数据库中使用一个标志,如果设置了该标志,则session将无效。可能不一定使用布尔值,您可以使用DateTime值并使在该时间之前启动的所有会话无效。这可以通过在login上检查存储在cookie中的值来完成。检查下面的stackoverflow讨论,我认为它会帮助你Check

oknwwptz

oknwwptz2#

我知道这是一个老问题,但我相信有一个更简单的方法。这个方法不提供列出所有活动会话的功能。但它是一个非常简单和直接的方法,在更改密码时使其他会话无效。
将名为SecurityStamp的列添加到用户表中。如果用户登录时未填充此列,请使用随机GUID进行填充。或者,您可以预先填充整个表。
当用户登录时,将在表中找到的值添加到会话变量中。在每次加载页面时,检查会话变量是否与数据库中的值匹配。
当用户更改其口令时,使用新的随机GUID更新数据库中的值。此外,还更新更改口令的用户的会话变量。您还可以添加一个按钮,使其他会话无效,而不必更改口令。
如果用户从其他设备登录,则与该其他设备登录关联的会话变量不会更新。当用户尝试访问任何页时,您将检查其会话变量是否与数据库不匹配,并强制其注销。

相关问题