JWT登录凭证和TOKEN登录凭证对比

前几天新搭一个项目框架,在用户登录凭证选择上纠结了好久。之前我一直用的redis+token认证方式,这种方式感觉灵活也方便,然后同事说应该用JWT令牌方式,现在比较火。然后一场针对怎么选,选什么好的辩论展开了。针对这种技术选型的讨论,我觉得还挺有意思的,其实还是那句话:没有最好的方案,也不存在哪个更好,只是针对不同应用场景有做出合适的选择,那就是最好的。以下是我个人对token和JWT的对比理解:

共同点

  1. 两者都可以携带用户信息
  2. 都是访问资源的令牌
  3. 都是使服务端无状态化
  4. 都是只有验证成功后,客户端才能访问服务端上受保护的资源

区别

  • JWT: 将 Token凭证 、过期时间还有用户信息等加密后存储于客户端,服务端只需要使用密钥解密进行校验(校验也是 JWT 自己实现的)即可,服务端不需要管理JWT令牌,因为 JWT 自包含了用户信息和加密的数据。
  • Token:依赖于redis服务,增加了一个缓存中间件,增大系统的复杂度。

jwt劣势

  • jwt加密方式会是密文变得很长,不便传输及管理。
  • jwt实现令牌缓存在客户端,服务端无法管理,比如要往登录凭证缓存更多信息,没办法控制。
  • jwt登录状态受客户端控制,如果做同一台机器只能一个用户登录这种服务端控制策略,不是很好做

token的劣势

  • 增加了中间件是系统变得更复杂。
  • 服务端得管理维护用户token,做服务迁移的时候,还得考虑用户登录凭证的迁移。

选择

个人觉得不管是JWT还是token没有觉得的好和坏,移动端应用我偏向选择token认证方式,accessToken+refreshToken认证机制更灵活,如果有单用户单一登录需求,最好用token认证方式。web端应用可以考虑采用JWT,登录凭证方便管理。

以上只是个人见解,由于研究的不是很深,想必还有很多不足的地方,欢迎各位大牛指正和补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值