相同浏览器同⼀浏览器多⽤户登录问题
问题:在如果在同⼀个浏览器下只有⼀个⽤户登录的情况,在服务端可以使⽤ Session 存储⽤户登录信息。但是在项⽬中如果需要在同⼀个浏览器下允许多个不同的⽤户登录,这样做会存在问题,因为服务端区分不同⽤户是通过 Cookie 中存储的 JSESSIONID 区分的,如果 JSESSIONID 相同,那么他们在服务端将会使⽤同⼀个 Session 对象。⽽同⼀浏览器使⽤的 Cookie 是相同的,从⽽ JSESSIONID 也是相同的,⽆法区分不同的⽤户。当浏览器登录第⼀个⽤户后,⽤户信息写⼊到 Session 中,第⼆个⽤户登录时,将会覆盖第⼀个⽤户的登录信息。
jsessionid
解决⽅法:不再依赖 Tomcat 默认的 JSESSIONID 来标识客户端,每进⾏⼀次登录后,服务端根据⽤户信息⽣成⼀份令牌,⼀份写⼊到数据库中并设置有效时间与⾝份信息存储在⼀起,定时清除,另⼀份返回到客户端。这个令牌可以放到页⾯的某个隐藏域中,但是不能存放在 Cookie 内,因为这样还是不能唯⼀区分⽤户。接下来客户端每次访问服务端都带上该令牌,以供校验⾝份信息,根据令牌的值,在数据库中到对应的⾝份信息。这样就能区分同⼀浏览器下登录的不同⽤户了。校验通过后,再将此令牌返回给客户端,以供其下次访问使⽤。为防⽌令牌被盗⽤,尽量使⽤ Https。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。