天天看点

用户登录权限校验 JWT【详解】

JWT (json web token)是当前最流行的用户登录权限校验(用户认证鉴权)方案。

官网 ​​​https://jwt.io/​​

JWT 的工作流程

用户登录权限校验 JWT【详解】
  1. 客户端填写账号密码访问登录接口 login,将账号密码传给服务端
  2. 服务端验证账号密码是否正确,若正确,则生成 token ,并将其返回给客户端
  3. 客户端将登录接口 login 返回的 token 存储在客户端本地
  4. 客户端访问业务接口(如获取当前登录用户信息 user/current)时,将 token 放入 header 中传给服务端,键名为 Authorization ,值为 Bearer 后加空格再加 token。
  5. 服务端验证 token 是否正确,若正确,则将数据(如当前登录用户信息)返回给客户端。

JWT 的 token 加密原理

JWT 的 token 由三部分组成

  1. Header:JSON对象,描述 JWT 的元数据,加密算法以及类型
  2. Payload:JSON对象,存放数据需要传递的数据
  3. Signature:对前两部分的签名,防止数据篡改。需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。
用户登录权限校验 JWT【详解】

JWT 的优点

  • token 是无状态的(stateless),服务器不需要记录任何信息,不占用内存
  • 多进程,多服务器集群没有影响,易于扩展
  • 假如不记录在 cookie 中,没有跨域的影响
  • 和服务器端解耦,任何设备都可以生成token。

JWT 的缺点

  • 无法废弃,没有办法对快速对已经登录的用户做处理。
  • 空间更大,所有数据是通过 base64进行编码的,会随着数据量的增大而变大。

继续阅读