为包含路径变量的 url 禁用 spring 安全性 [重复]
Posted
技术标签:
【中文标题】为包含路径变量的 url 禁用 spring 安全性 [重复]【英文标题】:Disable spring security for url containing a path variable [duplicate] 【发布时间】:2019-12-09 18:59:45 【问题描述】:我工作的项目有spring securityantMatcher
实现如下:
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()
我仍然获得未经授权的访问。
【问题讨论】:
【参考方案1】:您需要切换行以便将最具体的规则放在首位:
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
.antMatchers("/v1/users/**").authenticated()
这是因为第一个匹配项(按照声明的顺序)是使用的匹配项。
由于您首先拥有最通用的规则,因此这是考虑的规则,忽略下一个可能的匹配项(并禁止请求)。
【讨论】:
以上是关于为包含路径变量的 url 禁用 spring 安全性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 禁用从某个 url 发出的请求的安全性
如何在Spring启动应用程序中进行REST调用而不在Spring安全性中禁用CSRF保护?
如何在自定义反序列化器 Spring Boot 中读取路径变量或 URL 参数
使用 spring SecurityWebFilterChain 如何禁用/阻止除少数已知路径外的所有非 https 请求