同一个浏览器下相同域名和端口的不同应用,解决token被覆盖问题

在相同域名和端口的多个应用中,由于浏览器按域名存储session,导致不同应用的token冲突。问题源于浏览器的session key不能重复。解决方案是为每个应用的session信息设置独特的key,例如使用localStorage。然而,另一个问题出现,从系统a切换到系统b时,系统a的浏览器存储被清空,原来是登录页created中清空了localStorage,需调整为仅在退出登录时removeItem。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天后端在进行项目测试的时候,提出一个问题。用域名加端口号的方式访问项目,相同域名、端口号的情况下根据后缀的不同区分不同项目,导致俩个项目的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 所有了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值