无法在 Spring 应用程序中登录 H2 控制台

Posted

技术标签:

【中文标题】无法在 Spring 应用程序中登录 H2 控制台【英文标题】:Unable to login H2 console in spring application 【发布时间】:2019-06-23 09:53:42 【问题描述】:

在我的 spring 应用程序中,我添加了 devtools 依赖项。

所以,我可以拥有如下 H2 控制台:

我还没有为 H2 做任何额外的配置。所以我希望“连接”按钮应该让我进入数据库。但相反,我得到:

编辑:我已将 Spring Security 实现为

protected void configure(HttpSecurity http) throws Exception 
    http
            .authorizeRequests()
                .antMatchers("/path1", "/path2")
                    .access("hasRole('ROLE_USER')")
                .antMatchers("/", "/**").access("permitAll")
            .and()
                .formLogin()
                    .loginPage("/login");//the path where custom login page will be provided

我在这里错过了什么?

【问题讨论】:

看起来是安全配置问题,请分享您的安全配置。 安全配置对我来说很好,你能粘贴你得到的 h2 控制台的访问 url 和 whitelabel 错误吗? localhost:8080/h2-console/…, localhost:8080/h2-console/… 【参考方案1】:

页面清楚地显示错误是403(禁止)。请检查您的安全配置。

如果您使用的是spring security,请检查扩展org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter的配置类,在覆盖方法中:

  @Override
  protected void configure(HttpSecurity http) throws Exception 
    //super.configure(http);
    http
        .authorizeRequests()
        .antMatchers("/").permitAll() // you can allow the root endpoint ( also will be containing the default /h2-console endpoint ) for all users
                                      // or put some role restriction on the specific "/h2-console" endpoint to the admin user you are going to be logging in with.
        .antMatchers("/admin/**").hasRole("ADMIN")
          .and()
        .csrf().disable() //rest of the configs below according to your needs.
        .headers().frameOptions().disable()
          .and()
        .formLogin();
  

【讨论】:

以上是关于无法在 Spring 应用程序中登录 H2 控制台的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot/H2 控制台未显示我的表

如何在 Spring Boot 库中启用 H2 控制台?

Spring Boot / H2控制台没有显示我的表格

使用 MyBatis + H2 配置 Spring Boot 身份验证/登录

使用 Spring Boot 配置 H2 的 Web 控制台

无法加载驱动程序类:在 Spring Boot 应用程序中的 org.h2.Driver