我尝试为permitAll()
设置端点/h2-console
,以便无需登录即可访问h2控制台。
我的安全配置:
@Configuration
public class SecurityConfig {
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SCryptPasswordEncoder sCryptPasswordEncoder() {
return SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8();
}
@Order(Ordered.HIGHEST_PRECEDENCE)
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests()
.requestMatchers("/h2-console/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.defaultSuccessUrl("/main", true)
.and()
.headers().frameOptions().disable();
return http.build();
}
}
我也会把所有其他配置的任何情况下:
x一个一个一个一个x一个一个二个x
但是,当我尝试访问localhost:8080/h2-console
时,我已重定向到/login
页面
UPD:
Spring安全日志:
例如Spring失效。序列应用:在11.758秒内启动SequrityApplication(进程运行时间为12.623)
o.s.安全.网络.过滤器链代理:保护GET /h2-控制台
o.s.s.w.a.匿名身份验证过滤器:将SecurityContextHolder设置为匿名SecurityContext
操作系统HttpSessionRequest缓存:已保存请求http://localhost:8080/h2-console?继续会话
o.s.s.web.默认重定向策略:正在重定向至http://localhost:8080/login
o.a.c.c.C.[Tomcat].[本地主机].[/]:正在初始化Spring调度程序Servlet“调度程序Servlet”
1条答案
按热度按时间xkrw2x1b1#
链中的另一个安全筛选器可能正在覆盖此配置。
您可以尝试将以下代码添加到securityFilterChain方法中,以显式允许访问H2控制台:
这将禁用H2控制台的基本身份验证和CSRF保护,并允许对“/h2-console/**”路径的所有请求无需身份验证。它还将帧选项设置为“sameOrigin”,以防止控制台显示不正确的问题。
请注意,在生产环境中保持H2控制台的安全非常重要,因为它提供了对数据库的直接访问。
如果您正在测试配置文件/环境,则将此配置添加到securityFilterChain测试中...