Spring Docs -- Spring Session

官网:https://spring.io/projects/spring-session

Samples:https://docs.spring.io/spring-session/reference/samples.html#samples

指引

  1. Spring Session – HttpSession Integration HttpSession集成
  2. Spring Session – WebSocket Integration WebSocket 集成
  3. Spring Session – WebSession Integration WebSession 集成
  4. Spring Session – Spring Security Integration Spring Security 集成

介绍

Spring Session 提供管理用户会话信息的 API 和实现

特性

Spring Session 使支持集群会话变得简单,而无需绑定到特定于应用程序容器的解决方案,还提供与以下各项的透明集成

  • HttpSession 允许以中立的方式替换应用程序容器(即Tomcat)中的 HttpSession,并支持在标头(head)中提供会话ID(session IDs)以使用 RESTful API
  • WebSocket 提供在接收 WebSocket 消息时保持 HttpSession 活动状态的能力
  • WebSession 允许以中立的方式替换应用程序容器(即Tomcat)中的 Spring WebFlux 的 WebSession

模块

  • Spring Session Core 提供核心Spring Session 功能和API
  • **Spring Session Data Redis **提供由 Redis 支持的 SessionRepository 和 ReactiveSessionRepository 实现和配置支持
  • Spring Session JDBC 提供由关系数据库支持的 SessionRepository 实现和配置支持
  • Spring Session Hazelcast 提供由 Hazelcast 支持的 SessionRepository 实现和配置支持
  • Spring Session MongoDB 提供由 MongoDB 支持的 SessionRepository 实现和配置支持
  • SessionRepository 会话存储库
  • ReactiveSessionRepository 响应式会话存储库
  • Configuration Support 配置支持

会话认证鉴权策略:Cookie Session Token

1. Cookie

客户端保存用户会话信息的机制(客户端请求,服务器响应时响应头包含Set-Cookie,客户端保存,客户端请求时请求头包含Cookie),实现 Session 的一种方式。但存储数据量有限(一般不超过4KB),都是保存在客户端浏览器中,当浏览器的会话关闭后自动消失。无法跨域访问,需要考虑CSRF

2. Session

服务器保存用户会话信息的机制(客户端请求,服务器新建生成 Session 对象映射 session id,通过 Cookie 传值响应,客户端请求时请求头的Cookie值包含 sessionId 键值对)。但在集群分布式系统中不同服务器无法共享同一个用户的会话认证鉴权。有以下解决方案:

  1. Session 复制。但存在数据冗余、性能消耗大(同一份 Session 在不同服务器保存一份)
  2. Session 粘连。Nginx 的 sticky 模块绑定服务器策略 支持按 ip 或 cookie 粘连等(即不支持负载均衡或服务器宕机后没有备用机)
  3. Session 共享(集群)。Spring Session 实现分布式 Session
  4. No Session。Token

3. Token

令牌 服务器生成的紧凑,可验证的字符串,客户端保存,服务器可选择性保存(保存即与 Session 一样为有状态;不保存即为无状态)。通常由三部分组成:header(至少需要指定用于签署JWT的算法)、payload(body JWT编码的所有标准声明 包含用户信息)、signature(sign 将header和body的组合后,通过密钥和算法(header中指定)计算出来),具有支持跨域访问(无须考虑CSRF)、无状态、基于标准化(JSON Web Token JWT)、适用于移动端应用等优点,但占带宽(比sessionId的值要更大)、无法在服务器注销(使令牌成为有状态的情况下即可对其注销)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值