MVC在相同用户登录后注销所有活动会话

时间:2016-12-25 11:23:03

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

我有c#mvc web应用程序。根据电子邮件和密码有简单的登录页面。现在我有这样的需要: 当用户登录系统时,相同电子邮件地址的所有活动会话都将注销。 我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用Session.Abandon()Clear()放弃当前会话,但如果有多个人使用相同的地址登录,则无法解决此问题。

您必须构建该检测;例如,您可以更新代表您的用户的表上的标志,然后在其他用户的会话中定期检查表是否重新登录。或者当用户登录时,在表中创建令牌具有过期日期的数据库表;将该令牌与cookie中的用户相关联。注销或重新登录时,您可以使与该电子邮件地址关联的令牌无效,并且每个用户在尝试访问应用程序时,可能会被您的应用程序拒绝检查令牌是否已过期。

答案 1 :(得分:1)

Abandon方法应该有效(MSDN):

Session.Abandon();

如果要从会话中删除特定项目(MSDN):

Session.Remove("YourItem");

如果您只想清除一个值,您可以这样做:

Session["YourItem"] = null;

如果要清除所有键,请执行以下操作:

Session.Clear();

如果这些都不适合你,那么就会发生一些可疑的事情。我会检查你在哪里分配值,并确认在清除值后没有重新分配。

简单检查:

Session["YourKey"] = "Test";  // creates the key
Session.Remove("YourKey");    // removes the key
bool gone = (Session["YourKey"] == null);   // tests that the remove worked
相关问题