备忘录篇JWT,R

JWT

传统的 session 流程
浏览器发起请求登陆
服务端验证身份,生成身份验证信息,存储在服务端,并且告诉浏览器写入 Cookie
浏览器发起请求获取用户资料,此时 Cookie 内容也跟随这发送到服务器
服务器发现 Cookie 中有身份信息,验明正身
服务器返回该用户的用户资料
JWT 流程
浏览器发起请求登陆
服务端验证身份,根据算法,将用户标识符打包生成 token, 并且返回给浏览器
浏览器发起请求获取用户资料,把刚刚拿到的 token 一起发送给服务器
服务器发现数据中有 token,验明正身
服务器返回该用户的用户资料
你发现了吗?好些并没有什么区别,除了 session 需要服务端存储一份,而 JWT 不需要

但实际上区别大了去了

session 存储在服务端占用服务器资源,而 JWT 存储在客户端
session 存储在 Cookie 中,存在伪造跨站请求伪造攻击的风险
session 只存在一台服务器上,那么下次请求就必须请求这台服务器,不利于分布式应用
存储在客户端的 JWT 比存储在服务端的 session 更具有扩展性

Redis

1.与其他用户状态保存方案比较
一般开发中用户状态使用session或者cookie,两种方式各种利弊。

Session:在InProc模式下容易丢失,并且引起并发问题。如果使用SQLServer或者SQLServer模式又消耗了性能

Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能。

Redis采用这样的方案解决了几个问题,

1.Redis存取速度快。

2.用户数据不容易丢失。

3.用户多的情况下容易支持集群。

4.能够查看在线用户。

5.能够实现用户一处登录。(通过代码实现,后续介绍)

6.支持持久化。(当然可能没什么用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值