当前位置: 首页 > news >正文

使用 SpringSecurity 发送POST请求出现 403

问题场景

在使用 SpringSecurity 时对一些访问权限进行了设置, 在用户请求资源时出现了403错误 , 通过检查代码发现请求权限是开放的, 并且切换成 GET 请求也是可以通过, 换成POST 请求就无法通过。
在这里插入图片描述

解决方法

在 SpringSecurity 中关闭 CSRF 因为
前端向后台发送 post 请求时,必须验证 csrf,否则会报错 403 Forbidden。

  @Overrideprotected void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity// CSRF禁用,因为不使用session.csrf().disable().antMatchers(HttpMethod.GET,"/","/*.html","/**/*.html","/**/*.css","/**/*.js","/profile/**").permitAll()// activiti modeler 放行.antMatchers("/modeler/**").anonymous().antMatchers( "/activiti/definition/readResource").anonymous()// 除上面外的所有请求全部需要鉴权认证.anyRequest().authenticated().and().headers().frameOptions().disable();}
1234567891011121314151617181920212223

这个时候就有新的问题出现, "/activiti/definition/readResource"已经是允许匿名访问了,但是在登录状态下访问还是会出现403,不登陆就可以正常获取,这个情况比较奇葩,大概理解的就是这个方法是匿名访问的,你登陆就不是匿名了,所以你没有权限访问。
看了下 SpringSecurity 权限设置有

    /*** anyRequest          |   匹配所有请求路径* access              |   SpringEl表达式结果为true时可以访问* anonymous           |   匿名可以访问* denyAll             |   用户不能访问* fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录)* hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问* hasAnyRole          |   如果有参数,参数表示角色,则其中任何一个角色可以访问* hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问* hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问* hasRole             |   如果有参数,参数表示角色,则其角色可以访问* permitAll           |   用户可以任意访问* rememberMe          |   允许通过remember-me登录的用户访问* authenticated       |   用户登录后可访问*/
123456789101112131415

将anonymous 改为permitAll 或者authenticated 后可以正常访问。

http://www.lryc.cn/news/273587.html

相关文章:

  • 解决Typora笔记上传到CSDN上图片无法显示的问题
  • Vue3.0+Echarts (可视化界面)
  • 编程语言的未来:探索技术进步的轨迹
  • SOLIDWORKS使用技巧——SOLIDWORKS草图绘制时一定要完全定义
  • 网络类型之GRE和MGRE和NHRP
  • uniapp获取日期
  • 编码和解码的未来之路
  • Prometheus实战篇:Prometheus监控redis
  • Vue2.Hello World
  • 【单片机项目实战】温度控制系统
  • SpringMVC-视图
  • 【React系列】Hook(一)基本使用
  • 算法训练营Day28
  • 鸿蒙OS应用开发之日期选择
  • Mysql 查看表注释或字段注释
  • MySQL InnoDB引擎
  • C++完成Query执行sql语句的接口封装和测试
  • C:宏:编程风格:井号与define之间的空格
  • django websocket
  • HackTheBox - Medium - Linux - Bagel
  • Capsolver:解决Web爬虫中CAPTCHA挑战的最优解决方案
  • 大数据系列之:读取parquet文件统计数据量
  • 力扣题:字符串变换-1.5
  • el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端
  • 2024年度 ROTS - 实时操作系统 Top 15
  • 苹果怎么同步备忘录?教程来了,干货满满!
  • Nginx(十八) 性能调优之 - 哪些层面可以进行优化
  • OpenStack云计算(三)neutron
  • Linux期末复习笔记
  • PHP实现多继承