JWT与token的区别

token

token的认证流程:

  1. 用户输入用户名和密码,发送给服务器,服务器验证账号密码成功
  2. 服务器生成令牌,本质是一个唯一字符串,可以使用uuid
  3. 将该令牌存到数据库或redis中,key是uuid,value是用户信息
  4. 把令牌返给客户端
  5. 下次请求的时候就把令牌放在请求头里带上
  6. 从数据库或redis中验证该令牌是否过期
  7. 没有过期获取value内容user信息

优点

  1. 可以隐藏真实数据,安全系数高
  2. 适用于分布式/微服务
  3. token支持手动控制,过期、吊销等
  4. 可以实时查询现有token

缺点

  1. 存放在数据库或者redis,依赖服务器资源
  2. 效率相对jwt比较低

JWT

概念

JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证

JWT的认证流程:

  1. 用户输入用户名和密码,发送给服务器,服务器验证账号密码成功
  2. 服务器使用签名秘钥生成jwt,把用户id放到jwt中
  3. 把令牌返给客户端
  4. 下次请求的时候就把令牌放在请求头里带上
  5. 服务器使用签名秘钥验证jwt是否有效
  6. 有效后可以从jwt中获取到用户id

优点

  1. jwt自身包含用户信息且无法篡改,数据实际保存在客户端,所以我们可以分担数据库或服务器的存储压力

缺点

  1. 建议不要放敏感数据
  2. Jwt生成之后无法修改(发生变化)
  3. 后端无法统计生成jwt
  4. 无法吊销令牌,只能等待令牌自身过期
  5. 令牌长度与其包含用户信息多少正相关,传输开销较大
  6. Jwt是无状态的,如果别人获取到了,别人也能用

你可能感兴趣的:(java,分布式,微服务,jwt,token,登录验证)