抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >
  1. 客户端 token 只存简单的数据,如 userId 。永不过期,除非服务端返回 403 状态码。
  2. 当 token 进来时,校验,解析出 userId ,从缓存(如 redis )获得 userData ,若缓存存在,更新过期时间。
  3. 若缓存没有命中,从数据库加载返回同时存入缓存,设置过期时间。
  4. 基于安全考虑,可在 token 中再加入一个 version 字段,在第 2 步时校验该段。当改密码或其它需要将所有已登录的客户端重登时只需更新 version 字段,并清空缓存即可。
    以上,客户端无需主动刷新,也无需定期更换 token ,只有在服务端声明 token 无效时抛弃即可,同时里面也不会包含太多的敏感信息( jwt 只是 base64 编码,随手都可以解析数据出来,不应将敏感数据放在此处),数据量少 token 相对也短些,对传输也有好处;服务端可完全控制 token 的有效性,在必要的情况下可自主 revoke 已颁发的 token 。

参考文档

JWT 简介
从零实现Lumen-JWT扩展包(序):前因
Lumen上使用Dingo/Api做API开发时用JWT-Auth做认证的实现
Laravel 5 中使用 JWT(Json Web Token) 实现基于API的用户认证
什么是JWT – JSON WEB TOKEN
使用json web token
Laravel (Lumen) 中使用JWT-Auth刷新token的问题
自定义中间件(Middleware)监听 Jwt-auth 身份认证(Laravel)
Laravel实现dingo+JWT api接口之实战篇

评论