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

相关推荐
摇滚侠2 小时前
Spring Boot 3零基础教程,创建第一个 Spring Boot 3 应用,Spring Boot 3 外部配置,笔记03
java·spring boot·笔记
没有bug.的程序员5 小时前
服务网格 Service Mesh:微服务通信的终极进化
java·分布式·微服务·云原生·service_mesh
南尘NCA86668 小时前
企业微信防封防投诉拦截系统:从痛点解决到技术实现
java·网络·企业微信
怪兽20148 小时前
SQL优化手段有哪些
java·数据库·面试
ss2738 小时前
手写MyBatis第107弹:@MapperScan原理与SqlSessionTemplate线程安全机制
java·开发语言·后端·mybatis
Deschen9 小时前
设计模式-原型模式
java·设计模式·原型模式
麦麦鸡腿堡9 小时前
Java的动态绑定机制(重要)
java·开发语言·算法
それども9 小时前
SpringBootTest运行线程池被拒绝
java
介一安全10 小时前
【Frida Android】基础篇6:Java层Hook基础——创建类实例、方法重载、搜索运行时实例
android·java·网络安全·逆向·安全性测试·frida