今天后端在进行项目测试的时候,提出一个问题。用域名加端口号的方式访问项目,相同域名、端口号的情况下根据后缀的不同区分不同项目,导致俩个项目的token变成一样的了,从而终止会话。
问题产生原因
浏览器是根据应用的域名或者IP地址储存session的,相同的域名或者IP下,session的名称也就是key不能重复。
用户访问系统a时,存储session信息token等于1,访问系统b时,session信息token被赋值为2,那么再去操作系统a时,检测到session与服务生成的不匹配,就会终止会话。
解决
为每个系统存储的session信息定义不同的key值
示例:我用localStorage
系统a
系统b
解决
解决完这个问题以后,竟然又出现了另一个。。。
当系统a登录成功以后,另开一个页签去打开系统b,此时切换至系统a,发现在浏览器中存储的信息都被清空了。检查代码发现,在登录页的created里,有清空浏览器存储的操作。
window.localStorage.clear()
注掉即可,顺便看下 退出登录的时候 是否removeItem 所有了。