Spring Boot:无法登录 h2 控制台
Posted
技术标签:
【中文标题】Spring Boot:无法登录 h2 控制台【英文标题】:Spring boot: can't login h2 console 【发布时间】:2020-09-09 07:16:59 【问题描述】:我是 h2 DB 的新手,我已经搜索过这个问题,但没有找到解决方案。我想尝试用spring boot搭建一个tcp server模式,让别人用spring boot或者python连接。 下面是我的属性:
db2.datasource.driverClassName=org.h2.Driver
db2.datasource.url=jdbc:h2:mem:testdb
db2.datasource.username=sa
db2.datasource.password=
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.jpa.hibernate.ddl-auto=update
我可以连接到 localhost:8080/h2-console,但无法登录,它返回
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Sep 09 15:08:13 CST 2020
There was an unexpected error (type=Forbidden, status=403).
Forbidden
我正在使用spring security,但是我的方法configure在开发模式下是空的,我不知道我应该在哪里修复......
我的 pom.xml:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
和 tcp 服务器配置:
@Bean(initMethod = "start", destroyMethod = "stop")
public Server inMemoryH2DatabaseaServer() throws SQLException
return Server.createTcpServer(
"-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
@PostConstruct
private void initDb()
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
String sqlStatements[] =
"drop table employees if exists",
"create table employees(id serial,first_name varchar(255),last_name varchar(255))",
"insert into employees(first_name, last_name) values('Eugen','Paraschiv')",
"insert into employees(first_name, last_name) values('Scott','Tiger')"
;
Arrays.asList(sqlStatements).forEach(sql ->
jdbcTemplate.execute(sql);
);
有人知道如何解决这个问题吗?
谢谢
【问题讨论】:
【参考方案1】:好的,我发现了问题。
这是因为我使用的是spring security,并且是自动启用CSRF保护,所以我扩展WebSecurityConfigurerAdapter
并覆盖configure
:
@Override
protected void configure(HttpSecurity http) throws Exception
http.csrf().disable();
http.headers().frameOptions().disable();
它成功了。
【讨论】:
【参考方案2】:我认为您已经包含了 spring 安全启动器。默认情况下,它会保护所有路径,尝试在安全配置中排除 H2 控制台路径(/h2-console)。
【讨论】:
以上是关于Spring Boot:无法登录 h2 控制台的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 配置 H2 的 Web 控制台
无法加载驱动程序类: org.h2.Driver in spring boot