是这样,公司在做一个项目,其中涉及到了跨域问题,按照平常的套路就是,用户登录完成,保存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
有没有哪个大佬出现过和我同样的问题,希望各位大佬不吝赐教。
你的tomcat里面存在非标准tomcat8提供的jar么?
并没有,就是官方下载的,没动过没有看到一行错误信息,seeserverlog,有错误日志吗?
回复 @一个大苹果:怎么解决的呢?没有日志,问题已经解决了,感谢回答以上配置没有任何问题但是
如果在配置了context-path不是默认的/的情况下 cookie的path默认和context-path一致,就会导致cookie的作用域不一致导致无法共享,此时就必须加上cookie的path为/
这是博客地址
https://blog.csdn.net/hyz792901324/article/details/85319234
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。