springboot 将session存redis 有个疑问

现在有点疑问:
我将session存到redis中, 经过测试同一台电脑用不同浏览器访问我的应用,会生成两套sessionID。。
这样子怎么确定我账号当前是哪个session,主要是想实现避免用户重复登录的情况。

12345678_0001
浏览 1120回答 7
7回答

斯蒂芬大帝

两个浏览器代表两个不同的客户端,当然会有两个sessionId咯。用户重复登录的问题可以通过注销上一个登录信息或者覆盖上一个登录的信息来解决。由于http协议的无状态性,服务器是没法确定哪一个是你当前账号的session的...-重新读了一遍问题,发现题主的意思应该是在服务器集群下如何使两个服务器辨别同一个用户才对,我觉得可以采用共同使用同一存储中心的方式来完成。恩,对于redis了解不多,希望有大神来指正,小的不才,说错勿怪。

扬帆大鱼

"实现避免用户重复登录"是什么意思?我们假设你有如下场景:电脑A登录网站,因为cookie中没有任何信息,所以需要登录,登录后服务器端生成一个sessionID,并返回给前端,浏览器记入cookie,下次再开这个网页时,只要cookie没过期,就会把sessionID传给服务器,服务器凭此sessionID找到用户信息,然后告诉前端已经登录过了可以反问登录后的页面/信息。电脑B在电脑A登录过之后,也去访问网站,然后因为cookie中没有任何信息,所以需要登录,登录后服务器端生成一个sessionID,并返回给前端,浏览器记入cookie。。。。一切如电脑A一样。没毛病所以你的问题是?

holdtom

spring security里面是通过用户名的hash值来判断是否是重复登录的,可以配置禁止登录还是踢出之前的登录。就是实现一个过滤器在做登录验证的时候进行判断,可以参考security的实现方式。

三国纷争

比如登陆的话, 你会自己保存一些用户信息到当前的session中,每次登陆的时候另开一条线程遍历所有的session,通过userInfo里面的某一字段进行查找(比如username),存在两条记录以上就删除的session即可.

泛舟湖上清波郎朗

用常规办法无法区分。有人用flash本地通信的方式来解决此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java