【问题标题】:ASP.NET how to logout user all session when password is reset/changeASP.NET如何在密码重置/更改时注销用户所有会话
【发布时间】:2014-12-04 06:46:14
【问题描述】:

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

例子:

1) 用户 1 登录到 PC1、PC2 和 PC3。

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

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

如何在 ASP.NET 中完成?

谢谢。

【问题讨论】:

  • 我想这没有直接的方法......解决方案是每次使用尝试访问页面时检查用户的密码......或者您可以将标志放在名为密码重置的用户表中检查标志是否比注销用户为真并强制再次登录用户
  • 猜猜这是最好的方法,唯一的缺点是额外的检查。会试试谢谢。

标签: asp.net asp.net-membership


【解决方案1】:

有可能,Facebook,G mail都做到了,但并不简单

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2021-06-19
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 2016-05-17
      • 2021-01-28
      相关资源
      最近更新 更多