gpt4 book ai didi

java - Spring Security 即使使用 @PreAuthorize ("permitAll()"也会阻止匿名请求)

转载 作者:行者123 更新时间:2023-11-29 04:42:46 32 4
gpt4 key购买 nike

我有很多 API 端点需要经过身份验证的请求,还有一些允许任何请求。我希望 Spring Security 默认阻止匿名请求,但让我覆盖它:

aHttpSecurity.authorizeRequests().anyRequest().authenticated()

...

@PreAuthorize("permitAll()")
@RequestMapping("/foobar")
public ResponseEntity<FooBar> get() {
...
}

不幸的是,这不起作用:/foobar 输出 401。知道该怎么做吗?

最佳答案

@PreAuthorize 只是一个封装方法的注释,用于检查用户是否可以执行注释的方法。它不仅适用于 Controller 。

当您有 http 请求时,首先请求会通过一些 spring 安全过滤器,当您编写 .anyRequest().authenticated() 时,您只是不去某些包装的 Controller 端点。

所以,如果你有几个端点,你可以排除它

aHttpSecurity.authorizeRequests()
.antMatchers(HttpMethod.GET, "/foobar/**").permitAll()
.antMatchers("/**").authenticated()

并删除@PreAuthorize("permitAll()")

关于java - Spring Security 即使使用 @PreAuthorize ("permitAll()"也会阻止匿名请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521754/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com