1. 什么是JWT
JWT全称为(JSON WEB TOKEN),是目前流行做登录认证的工具之一,它是一个非常轻巧的规范
2.库安装
npm install jsonwebtoken
github地址: jsonwebtoken
3.更新策略1
假设一个token的有效时间为T;
当超过T小时没有请求过接口则失效;

- 用户携带账号密码访问后端校验。
- 校验成功后生成有效期为
T/2的token。 redis中设置有效期为T,key为token的key-value。- 当用户访问接口时,如果
token已经失效了,则去redis中查找,如果redis有该token则生成一个新的token,替换掉已经失效的token,重置redis的有效期时间为T。如果redis中没有该token,说明该token已经在redis失效或者是无效token,则告知用户重新登录
问题1:一旦token泄露,就可以一值访问 ~_~!
改进1
3步骤:redis中设置有效期为T,key为userid,值为token的userid-token;10步骤: 如果存在还要验证token是否一致,保证是最新的token;
这样以来就可以在token泄露的时候重新登录更新redis中的token,在原token失效后就无法再更新token;
但是一般token的有效时间T都是比较大(比如10天);
问题2:token泄露后有效时间过长
改进2
2步骤:校验成功后生成有效期为t(尽可能短)的token;
问题2:token传输过于频繁
改进3
- 采用一个
access_token访问资源。 - 采用一个
refresh_token更新access_token。
sso图解:




















