2017-12-07 14:33:43 386次浏览 4条回答 0 悬赏 30 金钱

有这么一个需求,一个账号不允许同时在两个地方登录。
比如账号A在PC1上登录, 同时又在PC2上登录,那么PC1上的会话将会断开,访问后需要重新登录。

网上有一个相关的文章可以解决同时登录的问题
http://blog.csdn.net/navioo/article/details/51887047
但在会话断后再自动登录的会话无法生效。

请教一下有没有其它可用方法?

登录
  • 回答于 2017-12-08 09:00 举报

    创建一个表存 登录用户id, ip这些, 登陆前先查一遍,有没有记录,有就不让进,没有就记录下来.

  • 回答于 2017-12-08 10:23 举报

    额,建议确认一下: 会话断开后 自动登录的sessionid 是否发生了变化
    看了下你参考的文章的原理, 它是利用会话session中存储的token,与数据库中对应用户的token进行比对,进而判定会话是否有效。
    如果 sessionid 发生了变化,就必然需要重新输入用户名密码进行登录了。

    另外, 如果要解决同一个会话过期后 自动登录依然可以直接用,建议 在比对用的token中只存储 IP UserAgent 等不会高频变化的信息。

  • 回答于 2017-12-12 09:43 举报

    12345

  • 回答于 2017-12-20 20:16 举报

    我问题答案写到了一半突然删除了,发现被问题绕进去了,简单分析下:

    • 不能同时登录,A浏览器登录后,B浏览器再登录,A要下线,而且A下线后再打开网站能自动登录.

    如果是这样的话,那么你为什么要然A下线?

    浏览器自动登录的大多数使用的 cookie 实现的.都是短连接(如果你的不是那就另说).请求完成后就断开,自动登录就是 下次带着上次 有效的 cookie 找到 有效的 session 去登录. 你让 A 下线怎么搞? 改 session ,让 A 的 cookie 找不到 session 就会退出登录了,再让 A 自动登录? A拿什么自动登录?

您需要登录后才可以回答。登录 | 立即注册
wskeee
助理

wskeee

注册时间:2015-08-13
最后登录:2018-01-12
在线时长:2小时20分

热门问题