2016-12-25 53 views

回答

2

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

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

1

Abandon方法应该工作(MSDN):

Session.Abandon(); 

如果你想删除的会话中使用的特定项目(MSDN):

Session.Remove("YourItem"); 

如果你只是想清除你可以做的价值:

Session["YourItem"] = null; 

如果你wan t清除所有键:

Session.Clear(); 

如果这些都不适合你,那么可怕的事情正在发生。我会检查以确定您分配值的位置,并确认清除值后它不会被重新分配。

简单的检查,做到:

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