开发者社区> 问答> 正文

使用token认证,如何检测token过期并更新的问题? 400 报错

使用token认证,如何检测token过期并更新的问题? 400 报错

我看到的是用一个refreshToken去更新token,但是token应该是前端发request请求资源的时候才能知道token失效了吧,那这样前端还是会看到一个请求错误啊,怎么样在用户无感知下更新token?

展开
收起
爱吃鱼的程序员 2020-05-30 22:36:35 2432 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    token 有ttl ttl到期 token失效 ttl到期之前 通过 refreshToken置换 token

    ######回复 @奔跑小子 : 前端在请求前拦截校验啊######那前端还要定时检测?######

    存在redis里,每次请求大于设置某个时间段修改ttl值

    ######String类型, 会导致key增长过多且分散, 建议用hash或者其他集合类型.######

    临近过期时间更新token有效期

    比如某次请求,如果token的有效期临近某一值 那么就更新token的ttl时间

    ######

    服务器做法, 如果token接近ttl的请求阀值,则自动为它续期.

    客户端做法, 本地在获得Token时,计算下次自动刷新Token的时间, 同时, 启动定时检测以及请求时主动检测的方式刷新Token.

     

    ######

    用jwt生成token, 每次前端请求时校验token是否快过期了,如果快过期了,在response header里返回一个新的token , 和前端商定,如果返回的 header里有新token ,使用新token替换老token

    ######

    token失效后端返回一个明确的状态码,前端发现失效后用refresh_token刷新并获取新的token并且使用新token再次发起之前的请求(前端应该可以做到),如果refresh_token也失效了就要求重新登录

    ######这样做比定时检测或者每次都检测应该好点,也可以做到refresh_token和token都没过期的情况下用户无感知######

    刷新token是你需要刷新token的expire_time,而不是改变token的value啊

    2020-05-30 22:36:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载