千家信息网

SpringBoot2.x版本中使用SpringSession常见问题怎么解决

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"SpringBoot2.x版本中使用SpringSession常见问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring
千家信息网最后更新 2026年11月03日SpringBoot2.x版本中使用SpringSession常见问题怎么解决

本篇内容主要讲解"SpringBoot2.x版本中使用SpringSession常见问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot2.x版本中使用SpringSession常见问题怎么解决"吧!

SpringBoot2.x SpringSession踩坑

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$ServletSessionRepositoryValidator': Invocation of init method failed; nested exception is org.springframework.boot.autoconfigure.session.SessionRepositoryUnavailableException: No session repository could be auto-configured, check your configuration (session store type is 'redis')

这是因为缺少了spring-session-data-redis依赖。

关于SpringBoot2.X中,引用SpringSession,同时使用Redis存储缓存数据需要进行如下配置:

    org.springframework.session  spring-session-core     org.springframework.session  spring-session-data-redis 
#使用使用Redis缓存session数据spring.session.store-type=REDIS#Redis服务器地址spring.redis.host=127.0.0.1#Redis服务器端口号spring.redis.port=6379

总结:

在SpringBoot2.x的版本中,引用spring-session-core时,不是对spring-session-data-redis进行加载,需要用户自己添加关于spring-session与redis的关联依赖。

springboot 2.x 踩坑--跨域导致session问题

目前IT界主流前后端分离,但是在分离过程中一定会存在跨域的问题。

什么是跨域?

是指浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。

遇到的场景

当我们用springboot + shrio +vue 来做后台管理的项目时,无法获取shiroSession当前登录的用户,

于是我们就排查,网上说在跨域时让session通过就可以了

后端

@Configurationpublic class CorsConfig {    private CorsConfiguration buildConfig() {        CorsConfiguration corsConfiguration = new CorsConfiguration();        corsConfiguration.setAllowCredentials(true);        // 允许任何域名使用        corsConfiguration.addAllowedOrigin("*");        // 允许任何头        corsConfiguration.addAllowedHeader("*");        // 允许任何方法(post、get等)        corsConfiguration.addAllowedMethod("*");        corsConfiguration.setMaxAge(3600L);        return corsConfiguration;    }    @Bean    public CorsFilter corsFilter() {        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();        // 对接口配置跨域设置        source.registerCorsConfiguration("/**", buildConfig());        return new CorsFilter(source);    }}

前端

axios.defaults.withCredentials=true;

但是设置后依旧不行

经过一天的百度与排查,我回滚到springboot 1.x 居然没有这个问题,才定位到是升级到springboot 2.x导致的原因,好了,已经抓住凶手了,这下子好对症下药了,去网上看了 springboot升级到2.x spring session 相关的问题。

终于发现了新大陆,spring-session 2.x 中 Cookie里面居然引入了SameSite 这个叼毛,他默认值是 Lax,好了咱们来看看这个是什么东西?

SameSite Cookie 是用来防止CSRF攻击,它有两个值:Strict、Lax

SameSite = Strict:

意为严格模式,表明这个cookie在任何情况下都不可能作为第三方cookie;

SameSite = Lax:

意为宽松模式,在GET请求是可以作为第三方cookie,但是不能携带cookie进行跨域post访问(这就很蛋疼了,我们那个校验接口就是POST请求)

总结:前端请求到后台,每次session都不一样,每次都是新的会话,导致获取不到用户信息

解决方案:

将SameSite设置为空

@Configurationpublic class SpringSessionConfig {     @Bean    public CookieSerializer httpSessionIdResolver() {        DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();        // 取消仅限同一站点设置        cookieSerializer.setSameSite(null);        return cookieSerializer;    }}

到此,相信大家对"SpringBoot2.x版本中使用SpringSession常见问题怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

问题 版本 域名 常见 常见问题 用户 内容 前端 后台 意为 数据 方法 服务器 模式 第三方 缓存 升级 学习 服务 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网最新的科技 互联网是不是新科技 中国 科技 互联网 深圳天众互联网科技公司 互联网金融 科技创新 海南科技产业互联网平台 广州恒生互联网科技有限 佳云科技和互联网广告 受益于互联网科技的高速发展 洛阳昕诺飞互联网科技有限公司 链环科技传统企业怎么转型互联网 深圳育鹏互联网科技有限公司招聘 互联网保险科技创业 翼展科技 首家互联网医院 山东子淼互联网科技有限公司 美国互联网科技公司 互联网时代科技型公司的机会 互联网的科技体现在哪里 数字科技和互联网金融哪个好 颐高云石互联网科技 科技互联网公司装修 时间互联网络科技 左右互联网络科技 互联网科技公司做什么 科技大学互联网专业好不好 金融科技与互联网金融相同和不同 互联网金融科技公司干啥的 云南省自由互联网科技有限公司 互联网与数字科技关系 江苏互联网科技小贷
0