☰
Session登录、Redis Token、JWT认证的对比
2026/10/10 2:42:13 网站建设 项目流程

Session登录、Redis Token、JWT认证的对比

文章目录

  • Session登录、Redis Token、JWT认证的对比
    • 前言
      • 基于Redis的Session登录
        • Session、Cookie会话
        • 利用Redis解决分布式的问题
      • 基于Redis的Session登录与JWT的比较
    • 总结

前言

黑马点评里面用到了基于Redis实现Session共享登录的方式,我们展开讲讲。

基于Redis的Session登录

Session、Cookie会话

首先我们要明白,为什么有Session的存在。

Http是无状态的,也就是说 客户端发出的每次请求 服务端都会把他当作陌生的请求。

而Session登录,在用户登录之后,服务器创建Session,里面存放id以及用户信息。

并把SessionID返回给浏览器的cookie。

Cookie本质:浏览器保存的一小段数据

以后该客户端发送请求的时候就会携带Cookie,服务端接受到里面的SessionID,就会去Session池里面查找。

这就是Session的登陆状态验证。

利用Redis解决分布式的问题

但是Session有个问题,无法共享信息。

在实际业务中,后端有多个服务器。

如果你登录时,负载均衡请求到服务器A,A里面有你的Session

但是你下次别的请求,到了服务器B,B里面没有Session,就校验失败了。

因此出现了基于Redis的Session登录
就是把SessionID放在Redis里面,然后查找的时候也在Redis里面查找。

还有"Token + Redis"方案。

这种方法就是在用户登录之后,生成一个Token返回给前端。

然后以Token为键,用户信息为值放入Redis。

浏览器下次发送请求的时候,带上token,后端拦截器拦截请求的时候校验token,完成校验。

JWT的具体实现原理可以看看我的另一篇文章:从点击登录到访问接口:一文看懂苍穹外卖JWT认证全流程

基于Redis的Session登录与JWT的比较

Redis Session:JWT
每次请求可expire续期,支持"活跃不过期"过期时间写死,无法续期
删 Redis key 可以实现踢出用户无法主动失效 只能等待过期
服务器有状态服务器无状态,不用存储一堆信息
适合需要登录态可控、滑动续期、踢人下线的 Web/APP适合微服务间认证、开放 API、一次性令牌

JWT实现登出:① token 有效期设很短(如15分钟),靠自然过期;② Redis 维护黑名单,登出时把 token 加入黑名单(这已不是纯无状态);

总结

本文介绍了基于 Session、Redis Token 和 JWT 的登录认证机制。不同方案在状态管理、分布式支持、续期与主动失效等方面各有优缺点,实际开发中应根据业务需求与安全要求选择合适的方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询