java - 为包含路径变量的 url 禁用 spring 安全性
问题描述
我正在工作的项目的弹簧安全antMatcher
实施如下:
http.authorizeRequests()
.antMatchers("/v1/users/**").authenticated()
.antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
当我尝试访问时,/v1/users/2/do
我收到一个未经授权的错误,但我希望它可以访问,因为我在 URL 模式中添加了“permitAll()”。
我努力了:
.antMatchers(HttpMethod.POST, "/v1/users/{id}/do").permitAll()
我仍然获得未经授权的访问。
解决方案
您需要切换行以便首先放置最具体的规则:
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
.antMatchers("/v1/users/**").authenticated()
这是因为第一个匹配项(以它们声明的相同顺序)是使用的匹配项。
由于您首先拥有最一般的规则,因此这是考虑的规则,忽略下一个可能的匹配项(并禁止请求)。
推荐阅读
- mule - XML解析以使用dataweave 2转换json
- python - 与 FORTRAN shell 程序进行交互通信
- r - 在 pheatmap 的行上添加带有图例的颜色
- swift - SwiftUI 小部件 DateStyle 自定义格式
- wordpress - Wordpress子页面在windows子目录安装中给出404
- r - 基于多个条件的标志
- javascript - 将 If/Else 转换为三元 React Typescript
- java - 如何将现有的 Maven 项目作为多模块 Maven 项目的一部分?
- powershell - 在 PowerShell 中运行 PowerShell 脚本运行正确,但从调度程序运行时出错
- r - 使用 pagedown 创建的 xaringan PDF 中不需要的边距