C# MVC在同一用户登录后注销所有活动会话
我有c#mvc web应用程序。根据电子邮件和密码有简单的登录页面。现在我有这样的需要: 当用户登录到系统时,相同电子邮件地址的所有活动会话都将注销。C# MVC在同一用户登录后注销所有活动会话,c#,asp.net-mvc,session,logout,C#,Asp.net Mvc,Session,Logout,我有c#mvc web应用程序。根据电子邮件和密码有简单的登录页面。现在我有这样的需要: 当用户登录到系统时,相同电子邮件地址的所有活动会话都将注销。 如何实现这一点?放弃方法应该可以工作(): 如果要从会话中删除特定项,请使用(): 如果只想清除某个值,可以执行以下操作: Session["YourItem"] = null; 如果要清除所有键,请执行以下操作: Session.Clear(); 如果这些都不适合你,那么就有可疑的事情发生了。我会检查您分配值的位置,并在清除值后验证它是否没
如何实现这一点?放弃方法应该可以工作(): 如果要从会话中删除特定项,请使用(): 如果只想清除某个值,可以执行以下操作:
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
您可以使用
会话.放弃()
或清除()
来放弃当前会话,但如果有多人使用同一地址登录,则不会解决该问题
你必须把这种探测建立在;例如,您可以更新表上代表您的用户的标志,然后在其他用户的会话中定期检查表是否重新登录。或者当用户登录时,在数据库表中创建一个带有过期日期的令牌;将该令牌与cookie中的用户关联。注销或重新登录时,您可能会使与该电子邮件地址关联的令牌无效,并且当每个用户尝试访问应用程序时,您的应用程序可能会拒绝他们检查令牌是否过期
Session.Clear();
Session["YourKey"] = "Test"; // creates the key
Session.Remove("YourKey"); // removes the key
bool gone = (Session["YourKey"] == null); // tests that the remove worked