Spring Boot 允许对单个端点进行未经身份验证的访问,而不使用.antMatchers

kr98yfug  于 2023-03-23  发布在  Spring
关注(0)|答案(1)|浏览(142)

那么,有没有一种方法可以允许对单个端点进行未经身份验证的访问?我有一个像这样的Spring Security Configuration类:

public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((authorize) -> authorize
                        .anyRequest().authenticated()
                )
                .httpBasic(withDefaults());
        return http.build();
    }
}

一个控制器看起来像这样:

@RestController
@RequestMapping(path = "/users")
public class ExampleController {

    @GetMapping
    public List<Users> getUserList(@PathVariable String userId) {
        return this.userService.getUserList(userId);
    }

    @PostMapping
    public void createUser(@RequestBody User user) {
        this.userService.createUser(user);
    }

}

因此,在我的配置中使用antMatchers可能无法完成这项工作,因为我的GETPOST具有相同的路径......有没有一种方法可以禁用单个端点上的安全性,比如类似的装饰器?
顺便说一句,我正在使用Java 19和Spring截至2023年3月的最新稳定版本

unguejic

unguejic1#

有一个antMatcher的重载,它将http方法作为第一个参数,尝试:

antMatcher(HttpMethod.GET, "/users").permitAll()

相关问题