HttpSession线程不安全的问题

在PC管理端接口请求中,采用Token进行身份验证,每10分钟更新一次Token并保留旧Token3分钟有效。但在高并发场景下,前端可能在短时间内使用已更新但后端尚未同步的Token,导致验证失败。解决办法是将Token存储于Redis中,以避免session的同步延迟问题。

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

问题现象:PC管理端的接口请求,进行了Token的拦截验证,Token更新的机制为10分钟更新一次,并保留旧Token3分钟有效,Token保存在session中。这时会引起一个问题,当触发更新的动作时,刚好有多个并发请求上来,带的都是同一个Token,此时后端存的Token是需要更新的,因为更新Token的逻辑加了锁,即只有第一个线程有资格触发创建新的Token,并同步更新session中的Token,其它线程不会触发,恰恰是因为存到了session中,当第一个线程触发更新机制后,并将Token响应给前端,而在极短的时间差内,前端拿到了这个新newToken后再次发起了请求,而后端session存在的Token竟然还是旧的Token,导致验证失败。

 

解决方法:将Token存到Redis中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值