作为一个管理员,我可以为所有用户重置密码。我可以知道如何注销特定用户的“所有”会话在所有设备/PC当我重置他的密码?示例:1)User 1登录到PC 1、PC 2和PC 3。2)管理员重置/更改用户1的密码。3)PC 1、PC 2和PC 3中的系统注销会话。在ASP.NET中怎样才能做到呢?谢谢。
7cwmlq891#
这是可能的,Facebook,G mail是这样做的,但这并不简单在检查Session_Start上的用户的数据库中使用一个标志,如果设置了该标志,则session将无效。可能不一定使用布尔值,您可以使用DateTime值并使在该时间之前启动的所有会话无效。这可以通过在login上检查存储在cookie中的值来完成。检查下面的stackoverflow讨论,我认为它会帮助你Check
Facebook
G mail
Session_Start
session
login
cookie
oknwwptz2#
我知道这是一个老问题,但我相信有一个更简单的方法。这个方法不提供列出所有活动会话的功能。但它是一个非常简单和直接的方法,在更改密码时使其他会话无效。将名为SecurityStamp的列添加到用户表中。如果用户登录时未填充此列,请使用随机GUID进行填充。或者,您可以预先填充整个表。当用户登录时,将在表中找到的值添加到会话变量中。在每次加载页面时,检查会话变量是否与数据库中的值匹配。当用户更改其口令时,使用新的随机GUID更新数据库中的值。此外,还更新更改口令的用户的会话变量。您还可以添加一个按钮,使其他会话无效,而不必更改口令。如果用户从其他设备登录,则与该其他设备登录关联的会话变量不会更新。当用户尝试访问任何页时,您将检查其会话变量是否与数据库不匹配,并强制其注销。
2条答案
按热度按时间7cwmlq891#
这是可能的,
Facebook
,G mail
是这样做的,但这并不简单在检查
Session_Start
上的用户的数据库中使用一个标志,如果设置了该标志,则session
将无效。可能不一定使用布尔值,您可以使用DateTime值并使在该时间之前启动的所有会话无效。这可以通过在login
上检查存储在cookie
中的值来完成。检查下面的stackoverflow讨论,我认为它会帮助你Checkoknwwptz2#
我知道这是一个老问题,但我相信有一个更简单的方法。这个方法不提供列出所有活动会话的功能。但它是一个非常简单和直接的方法,在更改密码时使其他会话无效。
将名为SecurityStamp的列添加到用户表中。如果用户登录时未填充此列,请使用随机GUID进行填充。或者,您可以预先填充整个表。
当用户登录时,将在表中找到的值添加到会话变量中。在每次加载页面时,检查会话变量是否与数据库中的值匹配。
当用户更改其口令时,使用新的随机GUID更新数据库中的值。此外,还更新更改口令的用户的会话变量。您还可以添加一个按钮,使其他会话无效,而不必更改口令。
如果用户从其他设备登录,则与该其他设备登录关联的会话变量不会更新。当用户尝试访问任何页时,您将检查其会话变量是否与数据库不匹配,并强制其注销。