前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Session

Spring Session

原创
作者头像
Qwe7
发布2022-08-12 22:13:33
5540
发布2022-08-12 22:13:33
举报
文章被收录于专栏:网络收集网络收集

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 实现

导入依赖

代码语言:javascript
复制
<!-- 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

代码语言:javascript
复制
# 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=1234Copy to clipboardErrorCopied

参考链接 https://www.cnblogs.com/lxyit/p/9672097.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Session 共享问题
  • Spring Session 简介
  • Spring Session 实现
  • Spring Session 实现
    • 导入依赖
      • 配置文件
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档