此问题已在此处有答案:
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)
如果有人遇到这种情况,请帮助提出适当的解决方案。
1条答案
按热度按时间flvlnr441#
将h2-cnsole传递到那里一次,同时尝试保留Web安全配置。我认为必须启用Spring Security,以便提供允许未经身份验证的访问所需的安全性。从安全过滤器链中取出请求匹配器,并尝试通过不同的函数传递。只适用于H2控制台。