问题:
系统A、系统B有登录拦截,部署在同一服务器域名相同,系统A在登录的情况下,如果在打开一个页面登录系统B,再次回到系统A访问时,会跳转到登录页重新登录,导致系统A与系统B不能同时登录,系统A已登录,系统B登录时会带上系统A产生的cookie,登录请求返回后,此时cookie中的值就变成了系统B创建的session对象,也就是系统A产生的cookie值被覆盖,系统A再次发送请求,会拿着系统B产生的cookie的值去系统A中找是否有session对象,由于找不到session对象,服务器又给A重新创建了一个新的session对象,所以系统A会重新登录。
方案:
由于两个应用没有设置cookie的名称,因此session的值都会保存在默认名JSESSION中,这也是导致两个应用cookie的JSESSION互相覆盖的原因,因此给两个应用分别设置cookie的name就解决了这个问题了,设置name在springboot中通过server.session.cookie.name进行设置。
Ruoyi若依分离版自定义cookie名称
同域名下两个项目的登录状态互相影响。
不分离版:在 ShiroConfig 里更改cookie名称。
分离版:在 ruoyi-ui/src/utils/auth.js
修改TokenKey
的值。
转载请注明出处:BestEternity亲笔。