ad3*_*ay0 1 java spring-security spring-boot
我正在工作的项目的 spring 安全antMatcher实现如下:
http.authorizeRequests()
.antMatchers("/v1/users/**").authenticated()
.antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
Run Code Online (Sandbox Code Playgroud)
当我尝试访问时,/v1/users/2/do我收到一个未经授权的错误,但我希望它可以访问,因为我在 URL 模式中添加了“permitAll()”。
我试过了:
.antMatchers(HttpMethod.POST, "/v1/users/{id}/do").permitAll()
Run Code Online (Sandbox Code Playgroud)
我仍然获得未经授权的访问。
您需要切换行以将最具体的规则放在首位:
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
.antMatchers("/v1/users/**").authenticated()
Run Code Online (Sandbox Code Playgroud)
这是因为第一个匹配项(与它们声明的顺序相同)是使用的匹配项。
由于您首先拥有最通用的规则,因此这是考虑的规则,忽略下一个可能的匹配(并禁止请求)。
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |