SpringBoot整合SpringSecurity遇到的SESSION验证问题

2023-10-29

前言

项目是之前的老项目springmvc+jsp项目改的,因为需要对框架做改动,功能没有大改动,所以没有采用前后端分离的方式,后端采用springboot+spring security前端还是jsp,所以还是session验证的方式登录。但是整合好后测试发现问题,每次登录跳转到首页之后刷新页面又重定向到了login页面

问题解决

1、问题出现的原因

因为人比较懒,框架直接用之前前后端分离的项目,配置里面SecuityConfig也是延用前后端分离的配置,这样创建完就发现一个问题:每次请求后端接口的session都不一致,这时候刷新页面重新请求后台得到是新的session,系统判断没有登录就会重新跳转到login页面

在排查的时候发现Security的配置SecuityConfig里面有这一行:

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)

这个是配置是session的生成策略,这个枚举类型,有几个类型,点击去查看

其中:

ALWAYS

总是创建HttpSession

IF_REQUIRED

Spring Security只会在需要时创建一个HttpSession

NEVER

Spring Security不会创建HttpSession,但如果它已经存在,将可以使用HttpSession

STATELESS

Spring Security永远不会创建HttpSession,它不会使用HttpSession来获取SecurityContext

问题就出在这里,我们的前端是jsp验证需要用session验证的方式,这样的配置session生成策略是STATELESS,就是不生成session,这样的配置还是之前前后端分离的配置,用在这里就不对了。

2、问题解决

咱们需要把生成session的策略改成ALWAYS,用session的方式验证。

将这个配置改成如下:

.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS);

测试问题解决!

3、其他问题记录:

接口请求POST返回403,通过查阅资料,Security采用的CSRF(Cross-site request forgery跨站请求伪造)默认支持的方法: GET|HEAD|TRACE|OPTIONS,不支持POST。

需要在security在配置中禁用掉它。加如下配置:

.and().csrf().disable()

 3、总结

其实是因为自己懒直接用之前的前后端分离的配置导致的,还有SpringSecurity有些配置还是需要了解他是做什么的,不然后面遇到其他问题也不知为什么。

这里就记录一下:

.cors()是开启跨域;
.csrf().disable() 是禁用使用跨站请求,可解决POST请求403问题;
.sessionManagement().sessionCreationPolicy(X)是session的生成策略,前后端分离的时候配置成STATELESS,非前后端分离的需要配置成ALWAYS

原创不易,转载请注明出处!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot整合SpringSecurity遇到的SESSION验证问题 的相关文章

随机推荐

  • NCBI Genbank核苷酸序列数据库检索基因序列解读

    核酸数据库 Genbank数据库 Nucleotide数据库 一 基因序列注释内容解析 以dut基因编码的大肠杆菌酶dutpase为例 在Nucleotide数据库search X01714或者dutpase 检索链接https www n
  • vue2自定义loading组件

    概要 通常情况下 我们在使用element ui时会使用到loading组件 一般用于对表格请求响应时间过长的时候使用loading 然而依然有一些其他情况需要用的loading 这个时候 v loading指令在其他组件上不生效了 所以官
  • python seaborn 散点图矩阵_Python绘图总结(seaborn库的使用)(下)

    上部分介绍了pie以及kdeplot distplot jointplot pairplot的用法分别绘制出数据的饼图 核密度分布图 柱状图 散点图 以及用jointplot绘制组合图 下面开始总结 散点图 二维 三维 折线图 并列 叠加
  • 彻底理解webservice SOAP WSDL

    WebServices简介 先给出一个概念 SOA 即Service Oriented Architecture 中文一般理解为面向服务的架构 既然说是一种架构的话 所以一般认为 SOA 是包含了运行环境 编程模型 架构风格和相关方法论等在
  • 夜神模拟器:新建android模拟器并安装apk文件

    1 安装夜神模拟器 下载地址 https www yeshen com a 直接双击nox xxx exe一步步安装模拟器 b adb devices查看结果 如果出现如下错误 解决方法 夜神模拟器的adb版本和androidsdk的adb
  • 数论初探--中国剩余定理(一)

    数论 很简单 小学奥数而已 中国剩余定理 小学五年级奥数内容 在一千多年前的 孙子算经 中 有这样一道算术题 今有物不知其数 三三数之剩二 五五数之剩三 七七数之剩二 问物几何 按照今天的话来说 一个数除以3余2 除以5余3 除以7余2 求
  • Anaconda------环境管理

    Anaconda 中的Conda核心功能就是包管理和环境管理 可以根据需要安装不同版本的python 而且能自由切换 先着重介绍一个概念 虚拟环境 virtual environment 它是一个虚拟化 从电脑独立开辟出来的环境 以Dock
  • 前端解决防盗链

    防盗链浅谈 由于利用百度新闻请求接口 导致部分图片请求失败 状态码403 服务被拒绝 之前一直用python写爬虫 所以很自然的就想到了伪装请求头 于是乎想到解决该问题的第一种方法就是创建vue config js 在里面配置代理 现在是学
  • matlab怎么产生一个随机数,matlab怎么产生随机数

    matlab是我们常用一种软件 对于做随机过程或者概率的朋友 常常会用到一些随机数 但是这些数据怎么生成呢 下面介绍下matlab中一些常见的随机数 matlab产生随机数可以使用的方法 1 均匀分布 unifrnd a b m n 产生m
  • Oracle vm virtualbox安装

    Oracle vm virtualbox安装 VirtualBox 簡介 下載安裝包 VirtualBox 簡介 VirtualBox 是一款开源虚拟机软件 VirtualBox 是由德国 Innotek 公司开发 由Sun Microsy
  • 继电器控制电路

    继电器控制电路 原理 控制方式 继电器种类 案例 原理 使用控制电器的触点 按钮 开关或继电器触点 控制用电器工作 控制方式 手动控制 触点通 断用人工控制 比如按钮 手动开关 自动控制 触点通断可以自动实现 如行程开关 继电器 继电器种类
  • UE4之HTTP请求

    UE4中的HTTP模块封装了libcurl的HTTP功能 很容易实现HTTP下载和上传功能 代码如下 class FHttpRequestTest void Download const FString URL TSharedRef Htt
  • JS /JQ文件、图片上传+图片预览(二进制、base64)

    一 base64
  • unity刘海屏适配

    public class SafeArea MonoBehaviour private Rect safeArea public Action
  • 安装chromadb遇到的问题与python3升级

    环境 python 3 10 centos 7 x 使用 pip3 install chromadb 时 遇到以下问题 问题1 gcc note This error originates from a subprocess and is
  • 系统建模与仿真项目驱动设计报告-基于MATLAB的GUI界面设计

    摘 要 MATLAB语言是一种十分有效得工具 能够容易解决在系统仿真以及控制系统计算机辅助设计领域的解决问题 在本次的系统建模与仿真设计中 需要使用人机交互界面 MATLAB GUI功能设计一个系统仿真GUI界面 由于GUI本身提供了Win
  • 伽罗华域(Galois Field)理解、基于伽罗华域的四则运算(附详细python代码)

    参考链接 https blog csdn net luotuo44 article details 41645597 参考链接 https blog csdn net shelldon article details 54729687 伽罗
  • 能在路由器里挂载阿里云盘的aliyundrive-webdav

    什么是 aliyundrive webdav aliyundrive webdav 是阿里云盘 WebDAV 服务 主要使用场景为配合支持 WebDAV 协议的客户端 App 如 Infuse nPlayer 等实现在电视上直接观看云盘视频
  • 6. 模块

    http www pythondoc com pythontutorial3 modules html 6 模块 如果你退出 Python 解释器并重新进入 你做的任何定义 变量和方法 都会丢失 因此 如果你想要编写一些更大的程序 为准备解
  • SpringBoot整合SpringSecurity遇到的SESSION验证问题

    前言 项目是之前的老项目springmvc jsp项目改的 因为需要对框架做改动 功能没有大改动 所以没有采用前后端分离的方式 后端采用springboot spring security前端还是jsp 所以还是session验证的方式登录