Spring Security最新版本安全过滤器链配置

x33g5p2x  于 2023-01-09  发布在  Spring
关注(0)|答案(2)|浏览(245)

我正在尝试应用最新版本的spring配置。我想允许所有的h2-console,但应用程序仍然要我授权。

@Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests()
                .shouldFilterAllDispatcherTypes(false)
                .requestMatchers("/api/v1/auth/**").permitAll()
                .requestMatchers("/h2-console/**").permitAll()
                .and()
                .authorizeHttpRequests()
                .anyRequest().authenticated()
                .and()
                .httpBasic()
                .and()
                .csrf().disable()
                .headers().frameOptions().disable();

        return http.build();
    }

我甚至试过改变h2-console的url,但是没有用,因为.requestMatchers("/api/v1/auth/**").permitAll()工作正常,所以这个行为很奇怪。

zvms9eto

zvms9eto1#

请像这样重写代码,然后重试。

@Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/h2-console/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .httpBasic()
                .and()
        .build();
    }
nwlls2ji

nwlls2ji2#

要允许不同的路径,应使用:

http
    .authorizeHttpRequests()
    .antMatchers("/api/v1/auth/**", "/h2-console/**").permitAll()
    .and()
    ...

切记:requestMatchers()的目的是指定Spring安全配置将应用于哪些请求。

相关问题