【问题标题】:Asp.net destroy session by sessionidAsp.net 通过 sessionid 销毁会话
【发布时间】:2014-11-13 04:16:52
【问题描述】:

当一个用户登录我的网站时,该用户有一个会话[sessionid like:xxxx-xxxx-xxxx-xx],当他在其他地方再次登录时,他有一个不同的会话[sessionid like:yyyy-yyyy-yy-yyy ],在他再次使用 session[sessionid like:yyyy-yyyy-yy-yyy] 登录后,我如何销毁上一个会话[sessionid like:xxxx-xxxx-xxxx-xx]。

在另一个会话中销毁一个会话! 这可能吗? 非常感谢!

【问题讨论】:

  • “他在别处再次登录”是什么意思?你所问的不应该是必要的。听起来你做错了。

标签: asp.net session destroy


【解决方案1】:

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

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

我的解决方案:

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

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

【讨论】:

    【解决方案2】:

    不用担心,如果您担心,则意味着您的应用设计不好。

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

    【讨论】:

    • 这不是我想要的。当这个用户再次登录时,你发现之前的会话还在,也可以做某事,因为他们有不同的会话ID。为了安全起见,我想销毁之前的会话。还是谢谢你。
    • 尝试使用不同的浏览器(IE、FF、CHROME...)登录同一个站点。
    • 知道了,看看这个:stackoverflow.com/questions/2645102/…
    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多