权限校验中的“双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的包,所以可以算是一种不错的解决方案。

相关推荐
掐指一算乀缺钱18 分钟前
SpringBoot 数据库表结构文档生成
java·数据库·spring boot·后端·spring
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑23 分钟前
苍穹外卖学习笔记(七)
java·windows·笔记·学习·mybatis
就这个java爽!29 分钟前
JAVA网络编程【基于TCP和UDP协议】超详细!!!
java·开发语言·网络·tcp/ip·udp·eclipse·idea
一叶飘零_sweeeet33 分钟前
为什么 Feign 要用 HTTP 而不是 RPC?
java·网络协议·http·spring cloud·rpc·feign
懒洋洋大魔王1 小时前
7.Java高级编程 多线程
java·开发语言·jvm
茶馆大橘1 小时前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea1 小时前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)1 小时前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹1 小时前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
MuseLss1 小时前
HashMap高频面试知识点
java·开发语言·哈希算法