Redis 在身份认证中的应用

1.Redis 在 Session 共享问题中的应用
  传统 Session-Cookeis 身份认证方法中,一个 Session 只保存在一台服务器上,适合域单体应用。随着项目规模的增加,项目的架构也不断向微服务分布式集群演进,传统的 Session-Cookie 方式在集群环境下就不能很好的工作了,这时就产生了 Session共享问题。
  Session 共享问题是指多台 Web 服务器不能共享 Session 存储空间,当请求切换到不同 Web 服务器时,导致 session 数据丢失,访问失败。
  当一个后端项目采用分布式集群的方式进行部署时,一个 Web 应用就可能部署在多台不同的服务器上,并通过 Nginx 等进行负载均衡。由于 Nginx 对不同的请求,会分发到不同的 Tomcat 上,因此会出现 Session 不同步或者丢失的问题。
  因此,在分布式集群中,需要整个服务器集群共享同一个 Session,Session 不能单独保存在单独的某一台 Web 服务器中,而是要保存在一个公共的会话仓库中,所有服务器都访问一个会话仓库,这样所有服务器就可以共享 session 了。
  实现 Session 共享的方案很多,最简单的办法就是把 session 数据保存到内存以外的一个统一的地方,例如 Redis 或 MongoDB 等数据库中。Spring 官方提供了Spring-Session 框架来实现 Seesion 的共享。
  Spring Session 提供了集群 Session(Clustered Sessions)功能,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的问题,简化了集群中 Session共享问题的实现。
 
2. Redis 在 Token 共享问题中的应用
  当前,Token 是前后端分离架构中常用的认证方式。“redis_token_1”项目演示了使用 JWT 创建 Token,然后将 token 分别写入 Redis 和 Http 响应头,并从 http 请求头和 Redis 中读出 token 信息,进行比对。
 
posted @ 2023-04-05 18:39  Linqylin  阅读(86)  评论(0编辑  收藏  举报