spring boot security 不允许我访问 h2-console

Posted

技术标签:

【中文标题】spring boot security 不允许我访问 h2-console【英文标题】:spring boot security doesn't let me access h2-console 【发布时间】:2020-11-11 11:05:39 【问题描述】:

我正在尝试在 Spring Boot 中实现 JWT。出于某些调试目的,我需要 H2 控制台。

所以在我的 WebSecurityConfiguration 中我写道:

@Override
    protected void configure(HttpSecurity httpSecurity) throws Exception 
        //httpSecurity.headers().frameOptions().disable();
        httpSecurity.authorizeRequests().antMatchers("/h2").permitAll();
        httpSecurity
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/auth/check/username").permitAll()
                .antMatchers("/auth/signup").permitAll()
                .antMatchers("/auth/login").permitAll()
                .anyRequest().authenticated().and()
                .exceptionHandling().and().sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);

    

在我的应用程序属性中,我有这个配置:

spring.h2.console.enabled=true
spring.h2.console.path=/h2

当我点击“:8080/h2”时,它给了我 403

所以问题仍然存在,如何正确配置 Spring Boot Web Security。

包含/h2/** 后,我得到了这个用户界面:

【问题讨论】:

【参考方案1】:

请尝试“h2”模式为:

httpSecurity.authorizeRequests().antMatchers("/h2/**").permitAll();

还有这个:

        httpSecurity.headers().frameOptions().disable();

更多可以在这里找到:How to disable 'X-Frame-Options' response header in Spring Security?

【讨论】:

请再次检查问题 h2 cosole 加载正常,我在 Chrome(版本 84.0.4147.89)和 MS Edge 浏览器中试过,请检查一次 我不知道你是怎么做到的,但我需要这个:httpSecurity.headers().frameOptions().disable();,我已经编辑了答案,接受它,然后我会接受这个作为答案

以上是关于spring boot security 不允许我访问 h2-console的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security with Spring Boot:使用过滤器时允许未经身份验证的用户访问特定端点

如何允许用户在 Spring Boot / Spring Security 中仅访问自己的数据?

Spring Boot + Security:设置允许的来源时没有 Access-Control-Allow-Origin 标头

217.Spring Boot+Spring Security:基于内存的角色授权

Spring security - 允许匿名访问

Spring Boot + Spring Security + Thymeleaf 中的静态 Web 资源