spring boot--整合spring session实现session共享以及cookie丢失问题解决
来源:互联网 发布:js replacefirst 编辑:程序博客网 时间:2024/06/05 14:50
spring session可以利用redis透明的存储并共享web应用的HttpSession,当结合spring boot使用时,更是大大的节省了我们整合的时间。
1 添加pom依赖
<!-- redis starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- spring session的依赖 --><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency>
@SpringBootApplication@EnableRedisHttpSessionpublic class SpringcloudGatewayApplication {}上面的例子中,使用的是Redis来存储应用的session,当然spring session还支持以下几种方式:
EnableGemFireHttpSessionEnableMongoHttpSessionEnableJdbcHttpSession当然pom文件里面要加上各自对应的依赖
当添加完依赖之后,我们需要开启spring session的配置,该配置会负责创建一个Servlet的过滤器:SessionRepositoryFilter,该过滤器负责包装HttpServletRequest,并将替换HttpSession的实现。
3 HttpSession策略
默认的情况下,使用的是CookieHttpSessionStrategy,这种策略将允许使用setCookieName来指定Cookie的名称,如果不指定,默认是SESSION。当一个会话被创建时,HTTP响应将会有一个包含指定cookie名称和session id的cookie。spring session也支持其他的策略,如下:
HeaderHttpSessionStrategyMultiHttpSessionStrategyAdapter
如何配置HttpSession策略,方式如下:
@Configurationpublic class HttpSessionConfig { @Bean public HttpSessionStrategy httpSessionStrategy() { return new CookieHttpSessionStrategy(); } }
默认使用的是CookieHttpSessionStrategy
4 增加redis配置
由于session信息被过滤器拦截之后,会存放在redis中,因此,我们需要添加redis的配置,这部分就不做过多的介绍,请参考前面的博客。
5 查看redis中存放的session信息
我们可以使用keys *来查看redis中所有的session信息
使用hkeys来查看具体session里面包含的属性
使用hget来查看具体属性的值,例如:hget spring:session:sessions:98b669ec-9e1a-4bbc-a891-ac6502d28aa7 "sessionAttr:honeybeeSingleNo"
6 使用
使用的方式和原来的方式一致,不需要做任何的改变,例如
HttpSession session = request.getSession(); if(null != no && !no.isEmpty()){ UserInfo employee = client.queryEmployeeByNo(no); if(null != employee){ session.setAttribute("employee", employee); } }
7 使用中发现的问题
在实际的使用中,我们发现每次请求经过zuul的时候,session就会发生改变,导致后面的请求获取不到session中的内容,该问题疑似是cookie丢失导致的,目前的解决方案是每次请求的时候,前端都将cookie信息带过来,从而获取session里面的信息,如有更好的解决方案,还请不吝赐教。
- spring boot--整合spring session实现session共享以及cookie丢失问题解决
- spring-session整合redis实现session共享
- spring boot整合redis实现shiro的分布式session共享
- spring boot session 共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- spring boot 共享session redis实现
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- Spring Boot使用Redis实现session共享
- spring boot + redis 实现session共享
- Spring boot + redis 实现session 共享管理
- spring-session实现session共享
- spring-boot实战:共享session
- [Session共享]Spring-Redis实现Session共享
- 分布式cookie-session的实现(spring-session)
- window命令窗口的跳转命令——cd
- setsockopt中参数之SO_REUSEADDR的意义(转)
- boost
- javascript模块化编程
- 小程序打开网页,微信小程序web-view打开html网页
- spring boot--整合spring session实现session共享以及cookie丢失问题解决
- centos 7 U盘安装教程
- Azure 中部署Gitlab的方法
- 升级openssh【HP-UX】
- GPIO控制led亮暗
- js获取浏览器高度和宽度值
- UGUI中按Tab切换InputField
- 浏览器兼容-----前端最头疼的问题
- 【deeplearning.ai笔记第二课】2.2 优化算法(动量梯度下降,RMSprop,adam)