- access_token
access_token 由后端颁发给前台,一般采用对称加密算法,可以反向解析出参数信息,如:用户ID,失效时间等
场景
:
每次前端访问后端API接口,header中会带上此token,后端拦截器检验此token是否失效,当前请求用户ID等
JWT token: https://www.jianshu.com/p/b56fd5b24636
- refresh_token
它的作用就是避免让用户重复输入账号密码登录再次验证
二者组合使用
一般我们可以将access_token的过期时间设置为2小时的,refresh_token的过期时间设置为1个月,然后用户第一次进来,用了一段时间access_token过期了,过期后前端携带refresh_token去获取新的access_token,返回的新的access_token依旧是2小时,那么除此之外,refresh_token自身再刷新一次,刷新一次后他还是1个月的过期时间(不累加),这就保证了用户在一个月内只要访问了应用,就可以享受无感知的体验.
- 安全性
token泄露概率层面分析
:
- access_token 泄露概率比较大,毕竟每次api请求都附带它,如果单独把 access_token 过期时间设置过长,一旦泄露,就相当于密码泄露
- refresh_token 泄露概率比较小,只有每次access_token 失效时才会使用它,所以二者组合可以很好的避免token泄露带来的安全风险,同时又能保证用户体验