spring boot+spring session+redis集成session共享问题

发布于 2022-01-06 21:32:00 字数 2196 浏览 830 评论 6

是这样,公司在做一个项目,其中涉及到了跨域问题,按照平常的套路就是,用户登录完成,保存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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

反目相谮 2022-01-07 18:00:25

以上配置没有任何问题但是 
如果在配置了 context-path 不是默认的/ 的情况下  cookie的path默认和context-path一致,就会导致cookie的作用域不一致导致无法共享,此时就必须加上 cookie的path为/ 

这是博客地址
https://blog.csdn.net/hyz792901324/article/details/85319234

天涯离梦残月幽梦 2022-01-07 17:53:38

没有日志,问题已经解决了,感谢回答

反目相谮 2022-01-07 15:16:17

回复
怎么解决的呢?

女中豪杰 2022-01-07 14:50:21

没有看到一行错误信息,see server log ,有错误日志吗?

嘦怹 2022-01-07 13:28:59

并没有,就是官方下载的,没动过

悲喜皆因你 2022-01-07 07:42:20

你的tomcat里面存在非标准tomcat8提供的jar么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文