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

时间:2014-12-04 06:46:14

标签: asp.net asp.net-membership

作为管理员,我可以为所有用户重置密码。我可以知道当我重置密码时,如何在所有设备/ PC上注销特定用户的“所有”会话?

示例:

1)User1登录PC1,PC2和PC3。

2)管理员重置/更改User1的密码。

3)PC1,PC2和PC3中的系统注销会话。

如何在ASP.NET中完成?

感谢。

2 个答案:

答案 0 :(得分:2)

有可能FacebookG mail完成了,但这并不简单

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

答案 1 :(得分:1)

我知道这是一个老问题,但是我相信有一个更简单的方法。此方法不提供列出所有活动会话的功能。但这是一种非常简单明了的更改密码时使其他会话无效的方法。

在用户表中添加一个称为SecurityStamp的列。如果用户登录且未填充此列,请使用随机引导填充。或者,您可以预先填充整个表格。

用户登录时,将表中找到的值添加到会话变量中。在每次页面加载时,请检查其会话变量是否与数据库中的变量匹配。

当用户更改密码时,请使用新的随机GUID更新数据库中的值。另外,为更改密码的用户更新会话变量。您还可以添加一个使其他会话无效的按钮,而无需更改密码。

如果用户是从其他设备登录的,则与该其他设备登录关联的会话变量将不会被更新。当他们尝试访问任何页面时,您将检查他们的会话变量与数据库不匹配,并强制他们注销。