Sping Boot ,与Spring Security集成时无法访问h2-console [重复]

wfauudbj  于 2023-05-07  发布在  Spring
关注(0)|答案(1)|浏览(200)

此问题已在此处有答案

Spring Security version 6 issues with SecurityFilterChain(3个答案)
2天前关闭。
我正在写一个使用Spring Security的Spring-Boot项目,我还想使用H2数据库。
当我访问localhost:8080/h2-console时,它一直返回403(据我所知,它来自Spring Security,我需要让它忽略H2端点(/h2-console/**)进行身份验证)。
这是我的配置类,我使用了这个,但它仍然返回403

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfiguration {

    private final JwtAuthenticationFilter jwtAuthFiler;
    private final AuthenticationProvider authenticationProvider;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {

        httpSecurity
                .csrf()
                .disable()
                .authorizeHttpRequests()
                .requestMatchers("/api/v1/auth/**").permitAll()
                .requestMatchers("/h2-console/**").permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS) //Spring will create new session foreach request
                .and()
                .authenticationProvider(authenticationProvider)
                .addFilterBefore(jwtAuthFiler, UsernamePasswordAuthenticationFilter.class);

        return httpSecurity.build();
    }
}

更多详情:

  • 我用Spring Boot 3.0.6
  • 我正在使用package org.springframework.security.config.annotation.web.builders;中的HttpSecurity类,版本为61.0(Java 17)

如果有人遇到这种情况,请帮助提出适当的解决方案。

flvlnr44

flvlnr441#

将h2-cnsole传递到那里一次,同时尝试保留Web安全配置。我认为必须启用Spring Security,以便提供允许未经身份验证的访问所需的安全性。从安全过滤器链中取出请求匹配器,并尝试通过不同的函数传递。只适用于H2控制台。

相关问题