传统token与Jwt区别及优缺点

一、传统token

 

例子:传统token登陆过程

  1. 前端点击登陆,服务器验证账号密码成功

  2. 服务器生成令牌,本质是一个32位的uuid

  3. 将该令牌存到数据库或redis中,key是uuid,value是userId

  4. 把令牌返给客户端,客户端把令牌存在cookie中。

  5. 下次请求的时候就把令牌放在请求头里带上

  6. 从redis中验证该令牌是否过期

  7. 获取value内容userId

  8. 根据userId查询用户信息,再返回客户端

传统token优缺点

优点:

  1. 可以隐藏真实数据

  2. 适用于分布式/微服务

  3. 安全系数高

缺点:

  1. 存放在redis,必须依赖服务器,暂用服务器资源

  2. 效率非常低

 

二、JWT

例子:JWT登陆过程

Jwt优缺点有那些

优点:

  1. 无需服务器端存放数据,减轻服务器端的压力

  2. 占用带宽比较小、跨语言

  3. token自身包含用户信息且无法篡改,在服务(网关)中可以自行解析校验出用户信息,对认证服务器(account-svc)压力小

缺点:

  1. 建议不要放铭感数据 userid、手机号码(如果非要放userId,deptId等信息,可采用rsa256算法加密)RSA256生成Jwt

  2. Jwt生成之后无法修改(发生变化)

  3. 后端无法统计 生成jwt

  4. 无法吊销令牌,只能等待令牌自身过期

  5. 令牌长度与其包含用户信息多少正相关,传输开销较大

  6. Jwt是无状态的,如果别人获取到了,别人也能用


版权声明:本文为qq_41369135原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。