Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC在同一用户登录后注销所有活动会话_C#_Asp.net Mvc_Session_Logout - Fatal编程技术网

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

C# MVC在同一用户登录后注销所有活动会话,c#,asp.net-mvc,session,logout,C#,Asp.net Mvc,Session,Logout,我有c#mvc web应用程序。根据电子邮件和密码有简单的登录页面。现在我有这样的需要: 当用户登录到系统时,相同电子邮件地址的所有活动会话都将注销。 如何实现这一点?放弃方法应该可以工作(): 如果要从会话中删除特定项,请使用(): 如果只想清除某个值,可以执行以下操作: Session["YourItem"] = null; 如果要清除所有键,请执行以下操作: Session.Clear(); 如果这些都不适合你,那么就有可疑的事情发生了。我会检查您分配值的位置,并在清除值后验证它是否没

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

放弃方法应该可以工作():

如果要从会话中删除特定项,请使用():

如果只想清除某个值,可以执行以下操作:

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