使用jwt和用随机字符串生成的token有啥区别

jwt和随机字符串生成的token有啥区别,,

阅读 7.8k
3 个回答

只说最直观的一点,token需要查库,而jwt可以不查或者少查,最终看你怎么设计jwt的payload,为了理解举个很简单的例子,现在有一个接口/viptest只能是vip用户访问,我们看看服务端如何根据Token判断用户是否有效

普通token版:

  1. 查库判断是否过期
  2. 查库判断时候是VIP

假设JWT的payload是这个:

{
  "exp": 1518624000,
  "isVip": true,
  "uid":1
}

JWT版:

  1. 解析JWT
  2. 判断签名是否正确,根据生成签名时使用的密钥和加密算法,只要这一步过了就说明是payload是可信的
  3. 判断JWT token是否过期,根据exp
  4. 判断是否是VIP,根据isVip

JWT版是没有查库的,他所需要的基础信息可以直接放到JWT里,服务端只要判断签名是否正确就可以判断出该用户是否可以访问该接口,因为和当然JWT里的内容也不是无限多的,其他更多的信息我们就可以通过id去查数据库

简单的说,jwt声明了加密类型便于第三方的接入,载荷中可以保存有效的信息来满足一下业务或安全上的要求,如可以设置失效时间,也可以验证iss签发者,可以拓展公共声明满足相应的业务需求,签名则可以在不使用session或缓存的情况下验证合法性

jwt是有状态的,自解析的,resource-server通过jwt和公钥就能解码出用户信息
jwt包含了用户信息,resource-server不用再去auth-server获取user_id之类信息,提高性能

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题