session和jwt哪个更好

session

Session是把用户的具体信息,权限什么的,存在于服务端的。用户发过来的SessionId,它可以直接去对比一个Map。直接去查看的,这样的话,效率比较高。

优点

  1. 原理简单,易于学习。
  2. 用户信息存储在服务端,可以快速封禁某个用户。

缺点

  1. 占用服务端内存,硬件成本高。
  2. 多进程,多服务器时,不好同步-需要使用第三方缓存,如redis。
  3. 默认有跨域限制。

分布式情况下存在的问题

有两台机器,分别称为A和B。因为它是分布式的,所有一般的情况下是会有一个负载均衡服务器的。用户去访问的时候,它可能第一次去访问A,然后A记录了用户的信息。然后这个用户再去访问的时候,它可能就访问B了,比如说登录功能,它就会让你重新登录,特别影响用户体验。

分布式情况下问题的解决方案

再有一个服务器用于统一存放Session信息。但如果用户信息太多,一台服务器存不下怎么办?
答:用redis来解决该问题。一般就是用Redis做统一的存储或者说不同机器之间做一个同步。一般就是这两种情况。

jwt

JWT传过来之后,服务器是还需要进行解析的。这样的话,它的性能消耗是比较高的。

优点

  1. 不占用服务端内存
  2. 多进程,多服务器,不受影响
  3. 无跨域限制

缺点

  1. 用户信息存储在客户端,无法快速封禁某个用户。
  2. 万一服务端密钥被泄露,用户信息全部丢失。
  3. token体积一般大于cookie,会增加请求的数据量。

总结

  1. 如有严格管理用户信息的需求,推荐session。
  2. 如无特殊需求,使用jwt。

参考资料:前端面试第16题:session和jwt

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值