写点什么

Spring Session

作者:武师叔
  • 2022 年 8 月 02 日
  • 本文字数:967 字

    阅读完需:约 3 分钟

Spring Session

在 Web 项目开发中,Session 会话管理是一个很重要的部分,用于存储与记录用户的状态或相关的数据。


通常情况下 session 交由容器(tomcat)来负责存储和管理,但是如果项目部署在多台 tomcat 中,则 session 管理存在很大的问题:


  1. 多台 tomcat 之间无法共享 session ,当负载均衡跳转到其它 tomcat 时,session 就失效了,用户就退出了登录。

  2. 一旦 tomcat 容器关闭或重启也会导致 session 会话失效。

Spring Session 简介

Spring Session 是 Spring 家族中的一个子项目,Spring Session 提供了用于管理用户会话信息的 API 和实现。


它把 servlet 容器实现的 httpSession 替换为 spring-session ,Session 信息存储在 Redis 或其它数据库中统一管理,解决了 session 共享的问题。

Spring Session 实现

SessionRepositoryFilter 类是一个 Filter 过滤器,符合 Servlet 的规范定义,用来修改包装请求和响应。这里负责包装切换 HttpSession 至 Spring Session 的请求和响应。


在登录/登出时调用 session.setAttritube 和 session.removeAttritube 方法时,将切换为对 redis 中的 session 进行修改。

Spring Session 实现

导入依赖

<!-- Spring Boot Redis 依赖  -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-redis</artifactId>    </dependency>
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency>Copy to clipboardErrorCopied
复制代码

配置文件

配置文件 application.properties


# Spring Session 配置# 数据源spring.session.store-type=redis# redis 刷新模式spring.session.redis.flush-mode=on_save# redis 命名空间spring.session.redis.namespace=test_session
# session 过期时间server.servlet.session.timeout=3600s
# Redis 配置# Redis数据库索引spring.redis.database=0# Redis服务器地址spring.redis.host=192.168.0.1# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码spring.redis.password=1234
复制代码


发布于: 刚刚阅读数: 3
用户头像

武师叔

关注

每天丰富自己,去过自己想要的生活! 2022.04.28 加入

一个喜欢最新技术,研发的人工智能专业的大二学生,用自己的代码做一些有意义的事情! 目前大二结束有去大厂研发岗实习的计划,每天丰富自己的技术,去过自己想要的实习生活。

评论

发布
暂无评论
Spring Session_8月月更_武师叔_InfoQ写作社区