7 回答

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

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

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

TA贡献1804条经验 获得超7个赞
添加回答
举报