问题描述
怎么限制用户用同一账号登录2次?打开2次窗口?同一浏览器,我试过用session可以,但是不同浏览器的话session不行。求帮忙?
解决方案
解决方案二:
换电脑了,原来电脑没有退出,让登录么?
解决方案三:
不同浏览器,只能通过数据库记录登录状态,判断是否重复登录
解决方案四:
引用2楼xup8888的回复:
不同浏览器,只能通过数据库记录登录状态,判断是否重复登录
这个可以考虑下,但是还要考虑很多因素,领导应该是不同意了!
解决方案五:
把登陆信息放到application里面啊,服务器不关闭application会一直保存登陆的用户信息,注销的时候从application销毁就可以了
解决方案六:
登录的时候会验证嘛,登录后的session中保存了用户的标志性信息,比如用户名/id之类,登录验证的时候根据此类信息查找session,找到了就是已经登录。将原session失效就好了
解决方案七:
引用5楼skyhitnow的回复:
登录的时候会验证嘛,登录后的session中保存了用户的标志性信息,比如用户名/id之类,登录验证的时候根据此类信息查找session,找到了就是已经登录。将原session失效就好了
楼上正解。如果数据量不大的话,你可以建个map,key为user_id,value为session_id,用户登录验证通过的话,你就看看user_id是否在map中嘛......
解决方案八:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的
解决方案九:
引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的
1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
解决方案十:
引用8楼zhouren1314的回复:
Quote: 引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
还要考虑负载均衡
解决方案十一:
引用9楼MrsFeng的回复:
Quote: 引用8楼zhouren1314的回复:
Quote: 引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
还要考虑负载均衡
均衡的话,那就只有写进数据库了,不然怎么办,有何高见?
解决方案十二:
这个话题,始终都不是绝对完美的办法,无论从应用,还是数据库都有弊端
解决方案十三:
数据库行级锁?
解决方案十四:
引用12楼zhengweijian15的回复:
数据库行级锁?
何解?
解决方案十五:
引用10楼zhouren1314的回复:
Quote: 引用9楼MrsFeng的回复:
Quote: 引用8楼zhouren1314的回复:
Quote: 引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
还要考虑负载均衡
均衡的话,那就只有写进数据库了,不然怎么办,有何高见?
既然是负载均衡还是放在库里处理吧,但是用户量大的话数据库要遭罪了或者考虑一下单独处理这块的缓存尽量减少对库的读写
解决方案:
引用14楼bcsflilong的回复:
Quote: 引用10楼zhouren1314的回复:
Quote: 引用9楼MrsFeng的回复:
Quote: 引用8楼zhouren1314的回复:
Quote: 引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
还要考虑负载均衡
均衡的话,那就只有写进数据库了,不然怎么办,有何高见?
既然是负载均衡还是放在库里处理吧,但是用户量大的话数据库要遭罪了或者考虑一下单独处理这块的缓存尽量减少对库的读写
一般验证是统一验证吧。逻辑写在验证服务器上就可以了吧。重复登录需要重复验证,验证时查看是否已经登录就可以了。
解决方案:
引用15楼skyhitnow的回复:
Quote: 引用14楼bcsflilong的回复:
Quote: 引用10楼zhouren1314的回复:
Quote: 引用9楼MrsFeng的回复:
Quote: 引用8楼zhouren1314的回复:
Quote: 引用7楼bcsflilong的回复:
说用session的那不是在扯淡吗?session的作用域是什么?把登陆信息放到application的这种方式才是正解,可以在application中方一个mapkey为用户名value为累计登录数,具体的逻辑需要自己好好在想想但是这种方式是没问题的1.信息量不是很大,又不是经常改动,建议放在application中2.也可以用缓存啊,缓存技术挺多的
还要考虑负载均衡
均衡的话,那就只有写进数据库了,不然怎么办,有何高见?
既然是负载均衡还是放在库里处理吧,但是用户量大的话数据库要遭罪了或者考虑一下单独处理这块的缓存尽量减少对库的读写
一般验证是统一验证吧。逻辑写在验证服务器上就可以了吧。重复登录需要重复验证,验证时查看是否已经登录就可以了。
验证的时候需要读取数据库吧。