通过使其会话无效来强制登录用户重新登录

时间:2009-10-21 18:32:00

标签: c# asp.net-mvc iis session

我在IIS7上运行了一个ASP.NET MVC应用程序。我使用会话来跟踪登录用户。有一个名为IsSignedIn的会话。 (“true”表示此用户当前已登录。)

我还有一个应用程序的管理页面。

现在,说已登录的user1必须立即暂停使用该服务。所以我想从我的管理页面中为user1设置的会话变量无效(这会强制用户再次登录)。

有没有办法可以从我的管理页面访问/修改每个登录用户设置的会话变量?

2 个答案:

答案 0 :(得分:6)

您无法从其他会话更改会话变量。

解决问题的一种方法是在Application-object中存储已登录用户的列表,然后更改该变量中的值。为此,您必须在每个页面的顶部检查该用户是否在登录用户列表中。

正如çağdaş对此答案发表评论,如果您存储要在应用程序变量中注销的用户列表,性能可能会更好。然后在页面的顶部做这样的事情(伪,这个实际的代码片段将不起作用)

if(Application["SuspendedUsers"].Contains(Session["UserID"]) {
  Session["IsSignedIn"] = false;
  Application["SuspendedUsers"].Remove(Session["UserID"]);
}

答案 1 :(得分:0)

您的会话状态存储在哪里?如果它在SQL Server中,您应该能够通过更新数据库中的相关行来使其无效。但是,标准会话状态服务器似乎不允许这样做。

或者,检查每个相关页面顶部的数据库,以查看用户是否仍具有权限/已通过身份验证。