【提问】怎么监听session非法关闭?

secnes7hh 发布于 2017/01/11 09:31
阅读 449
收藏 0

需求:同一时间只能有一个账号登录,第二个账号登录把第一个账号挤下来并给出相应正确提示

思路:使用application,吧每次登陆session存入application,再次登陆或首次登陆先从application取值判断,安全退出从application移除

问题:直接关闭浏览器 session无法正确关闭


求解,各位大神有什么好的方法吗?只要思路!感谢!

加载中
0
MZHS
MZHS

你得用长连接或者轮询来提供用户活着的证据,websocket我没做过你可以看看这方面的东西

s
secnes7hh
是准备用webscoket做 要保证实时监听
0
f
fgod
数据库给每个用户建立loginToken字段,每一次登录重新生成新的值存入数据库,并把loginToken放入个人信息,用户请求时从系统中查询此用户最新的loginToken(可以缓存起来,更新时重新缓存)与操作用户个人的进行比对然后放行或者提示重新登录。
f
fgod
回复 @secnes7hh : 好吧,我现在的系统用户量不大而且是内部系统,用这套做的。会话多的话,就真的有问题了。。 那是不是可以尝试不用session来管理登录,比如用redis给每个活跃用户分配内存,存储最新登录标记。。
s
secnes7hh
缓存session时间, 会话多的话 开销太大
0
Xjk
Xjk
使用缓存,一个用户缓存中只能有唯一记录
0
mickelfeng
mickelfeng
其实没必要用websocket, 存sessionid和用户id到内存表中, 同一用户登录后面一个用户session覆盖前一个。然后判断
s
secnes7hh
这个可以试试 但是最初的目的是达到一个及时通信的过程
0
bossin2014
bossin2014
session不是有个指定的Timeout吗。直接关闭浏览器的话,过了一段时间,session就失效了
bossin2014
bossin2014
回复 @secnes7hh : 我看了你的需求。你是要实现同个时间只能有一个用户可登陆系统。那么你每次登陆只需让前一个用户的session失效就行了啊,跟关浏览器没关系啊
bossin2014
bossin2014
回复 @secnes7hh : 你说具体点吧。因为有些需求不是按着字面上的意思去做的。例如你想给其他浏览器发送消息,目的是什么?是为了防止他进一步操作?如果是为了防止进一步操作,那么就可以做成在session失效后,客户点击任意一个操作时,给出提示,然后退出就行了。
s
secnes7hh
不可以额 要做到及时监听 给不同浏览器及时提送相应消息
返回顶部
顶部