权限校验中的“双token”方案

1. 双Token中的两个token分别是什么?

1.1 access_token

1.2 fresh_token

2. 为什么需要双token?一个token不行吗?

答: 两个token的职责不同。其中,access_token是在每次请求的时候携带给后端进行权限校验,但是这个token的过期时间很短,一般可能就半个小时,一旦用户半个小时都没有进行任何权限操作,这个token将会过期,这个时候再进行请求后端服务的时候,后端就会返回token过期的提示信息(自己团队内部决定),这个时候前端就可以使用类似于拦截器的东西进行拦截这次请求,当获得token过期提示信息时,前端就可以偷偷拿出登录获得的第二个token(refresh_token)去请求刷新token的接口进行token刷新,这个接口返回的就是刷新后的两个token,前端拿到后,就可以进行再次请求获取相关信息。

注:refresh_token的过期时间一般比access_token的过期时间长一倍,甚至更长

3. 为什么不用一个token,后端判断当快到期的时候,进行刷新token操作?

答:因为我们一边要达到用户如果用户在操作,token就不会过期的效果,一边又要达到如果token被不法分子劫持,他们的权限也不会持续太久的情况,就只能设置双token。

在以前,我们设计单token的方案进行token过期刷新,一旦这个token泄露,不法分子就可以无限进行token刷新,从而造成无法挽回的后果。

4. 那如果单token都能被劫持的话,那refresh_token难道就不会被劫持了吗?

答:答案是也会,但是refresh_token只有在token过期的那一刻才会使用,劫持的概率比access_token小太多,就算不法分子使用抓包工具,在很长一段时间也不一定能抓到一个refresh_token的包,所以可以算是一种不错的解决方案。

相关推荐
君顾127 分钟前
代驾跑腿业务系统实战开发指南
java·开发语言·代驾跑腿
NGINX开源社区1 小时前
NGINX Ingress Controller 5.5:安全性与性能提升,迁移更轻松
java·服务器·nginx
云烟成雨TD1 小时前
Micrometer 系列【25】Spring Boot Actuator | Spring MVC、Spring WebFlux 指标
java·spring boot·micrometer
liudashuang20172 小时前
Kafka Producer 隐藏深坑:Sender 线程自阻塞(自死锁)导致 BufferExhaustedException 完整复盘
java·分布式·kafka·linq
风筱2 小时前
Idea的CC GUI插件安装Claude Code SDK失败
java·ide·ai编程
m0_527034332 小时前
异步任务审核系统设计:消息队列、超时重试与失败补偿
java·大数据·开发语言
xbgRS2 小时前
springBoot项目配置加载优先级
java·spring boot
zzzll11112 小时前
Loop Engineering:循环工程的原理、实践与应用
java·数据库·python
假客套2 小时前
记一次若依 Excel 导出踩坑:Permission denied、401 报错完整排查记录
java·若依·linux服务器
岁岁养乐多2 小时前
深入解析 Spring @Cacheable 注解:从声明式缓存 到多维替代方案
java