2012-02-13 46 views
1

当一个用户登录我的网站时,此用户有一个会话[sessionid喜欢:xxxx-xxxx-xxxx-xx],当他再次登录时,他有一个不同的会话[sessionid喜欢: yyyy-yyyy-yy-yyy],在他再次登录会话[会话id:yyyy-yyyy-yy-yyy]后,如何删除之前的会话[sessionid:xxxx-xxxx-xxxx-xx]。Asp.net通过sessionid销毁会话

摧毁一个会议在另一个塞森! 这可能吗? 非常感谢!

+0

你是什么意思“他再次登录到别处”?你所要求的不应该是必要的。听起来像你做错了。 – 2012-02-13 09:55:10

回答

0

不用担心,如果你担心它意味着你的应用程序设计不好。

Session_End事件中的Global.asax中放置了一个记录器,您将能够通过读取日志文件来跟踪未使用的会话何时关闭。

+0

这不是我想要的。当这个用户再次登录时,你会发现以前的会话仍然存在,也可以做某事,因为他们有不同的sessionid。我想破坏以前的会议的安全。不管怎样,谢谢你。 – cloud 2012-02-13 10:06:39

+0

尝试使用不同的浏览器(IE,FF,CHROME ...)登录同一网站。 – cloud 2012-02-13 10:07:50

+0

了解它,检查这一个:http://stackoverflow.com/questions/2645102/opening-a-new-browser-window-with-a-new-session-id-in-aspnet – 2012-02-13 10:11:51

2

这个请求似乎有很多混淆。我相信这个人想知道如何防止并发用户会话。

建议的方法:当用户成功登录时,使此新用户会话处于活动状态,并放弃用户的任何其他现有活动会话。

我的解决办法:

  1. 在登录后,SessionID保存到数据库,参考用户的帐户
  2. 在网站主文件(或任何文件,你可以用你的网站的所有页面共享),将当前SessionID(HttpContext.Current.Session.SessionID)与Saved SessionID进行比较。
  3. 如果两者不匹配,则放弃会话(Session.Abandon)。

这是一个简单的解决方案,但它应该解决这个问题。