spring boot+spring session+redis集成session共享问题
是这样,公司在做一个项目,其中涉及到了跨域问题,按照平常的套路就是,用户登录完成,保存session中,每次调用接口时检查session中的用户登录状态,但是跨域会导致session丢失,无法通过检索session来检查用户的登录状态,众里寻他千百度,最终使用的是spring session+redis的方案。
pom文件的配置:
<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>
redis服务器连接配置:
@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 1800) public class SessionConfig { @Bean public JedisConnectionFactory connectionFactory() { JedisConnectionFactory connection = new JedisConnectionFactory(); connection.setHostName("localhost"); connection.setPort(6379); return connection; } }
springSession配置:
public class SessionInitializer extends AbstractHttpSessionApplicationInitializer { public SessionInitializer() { super(SessionConfig.class); } }
以上都是按照网上的说法配置的。
然后运行:
一、使用spring-boot:run方式运行
完全没有问题,打开redis,sessionId也存进去了
二、使用Tomcat容器运行
出错:
[2017-12-13 10:50:01,495] Artifact demo-springSesionRedis:war: Error during artifact deployment. See server log for details.
接下来就是排错找问题:
首先根据控制台报错信息,重新部署了一遍文件,依旧如此
然后把和Spring session+redis相关的配置去掉,两种方式运行都没问题,所以问题应该是错在springSession+redis整合上面了
突发奇想,在spring-session-data-session依赖上面加上provided作用域,如下:
<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> <scope>provided</scope> </dependency>
再次启动项目,虽然项目没有出问题,正常启动,但是这样一来,在tomcat容器中启动时,spring session+redis就没作用了
环境:
idea+spring boot 1.5.9.RELEASE+tomcat 8.0.9
有没有哪个大佬出现过和我同样的问题,希望各位大佬不吝赐教。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
以上配置没有任何问题但是
如果在配置了 context-path 不是默认的/ 的情况下 cookie的path默认和context-path一致,就会导致cookie的作用域不一致导致无法共享,此时就必须加上 cookie的path为/
这是博客地址
https://blog.csdn.net/hyz792901324/article/details/85319234
没有日志,问题已经解决了,感谢回答
回复
怎么解决的呢?
没有看到一行错误信息,see server log ,有错误日志吗?
并没有,就是官方下载的,没动过
你的tomcat里面存在非标准tomcat8提供的jar么?