在使用 JWT(JSON Web Token)时,无法直接重置已签发 Token 的过期时间,因为 JWT 是自包含且不可变的。一旦签发,其 payload 中的 exp
(过期时间)字段就固定了,如果是这样用户就会在token过期后不得不重新登录获取token 可是体验就差了很多,起初想生成token入数据库中,后来思量再三使用了一个简单的方法;
基础思路就是token新增过期阈值 当客户端携带token访问的时候判断token时间是否已经达到设定的阈值,如果达到就新生成一个token下发 客户端接收到新的token替换本地token
代码如下:
配置jwt 基础数据
"Jwt": {
"Key": "ifmsoftkeyWebServiceApiWebServiceApiUsers",
"Issuer": "WebServiceApi",
"Audience": "WebServiceApiUsers",
"AccessTokenExpireMinutes": 10, -- 过期时间
"SlidingExpirationThreshold": 0.7 --阈值
},
新增中间件判断token是否需要新增
生成token方法 核心方法
登录生成token代码
注册中间件