redis实现session高可用集群、指定cookie中保存的sessionid名称
-
当用户在服务器1认证后,服务器1将session存入reis,这时服务器1突然挂了,用户还可以访问服务器2且不用登录,因为服务器2从redis中获取session
-
配置方式
# core模块中添加依赖 <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> # web模块中配置yml spring: session: store-type: none # session存储方式采用 redis redis: # 如果是本地redis可不配置 port: 6379
- 实际配置代码
# core模块中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> # web模块中配置yml spring: session: store-type: redis # session存储方式采用 redis redis: database: 1 host: 127.0.0.1 port: 6379 # password: 没有不用写 lettuce: # 连接池配置 pool: # 连接池中的最小空闲连接,默认 0 min-idle: 0 # 连接池中的最大空闲连接,默认 8 max-idle: 8 # 连接池最大阻塞等待时间(使用负值表示没有限制),默认 -1ms max-wait: -1ms # 连接池最大连接数(使用负值表示没有限制),默认 8 max-active: 8
-
测试:认证后查看redis数据库
-
认证成功后,sessionid名称为session
-
原来的sessionid为JSESSIONID
-
当配置了session会话超时时长,无操作超出设置时长,这时会提示超出时长,刷新则跳转到认证页面
-
但时这里sessionid的名称不为JSESSIONID,在之前的CustomInvalidSessionStrategy类中,刷新时便不会删除名称为session的sessionid
-
这里的解决方案是,在之前的CustomInvalidSessionStrategy类中,编写1个删除名称为session的sessionid;或者将redis管理的session的sessionid改为JSESSIONID;这里使用方式2
# yml中配置如下 server: port: 80 servlet: session: timeout: 1m # session会话超时时间,默认情况 下是30分钟(m),不能小于1分钟 cookie: name: JSESSIONID # 配置名称
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术