spring.h2.console.settings.web-allow-others对我来说无法禁用访问权限

时间:2018-06-08 17:52:08

标签: spring-boot h2

我正在尝试设置spring.h2.console.settings.web-allow-others = false,以便控制台仅在本地计算机上可用。如果我在IntelliJ中运行我的应用程序,它的效果很好,但是一旦我构建了jar并运行它,这个设置似乎没有效果,默认启用。

我不相信我在启动时会将任何参数传递给jar,但我想知道是否有其他内容可以覆盖此设置。

所以我在application.properties中有以下内容。

# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
#spring.h2.console.settings.web-allow-others=true

正如此示例所示,它已被注释掉,我希望默认为false。我已经尝试取消注释并设置为false,但没有效果。 我已经尝试使用webAllowOthers的H2 normal配置值,但没有效果。

如果我设置spring.h2.console.enabled = false,我将无法再访问控制台。我觉得这表明我至少编辑了正确的文件。

我的测试用例有一个二级test.properties,但我尝试设置为false并删除该文件。我曾经想过,也许最后一场胜利还是其他什么。

我不知道要尝试的其他事情,我唯一的想法是错误或其他可以覆盖这些设置的配置。

我正在使用SpringBoot 2.0.0.RELEASE和dB2 1.4.196

更新:经过进一步测试,如果我构建了jar并启用了控制台并禁用了web-allow-others,它似乎工作正常。但是一旦我启用了web-allow-others一次,它就永远不会阻止它,即使在web-allow-others = false之后

2 个答案:

答案 0 :(得分:0)

在代码中添加以下bean并打开http://remoteIp:8080/,它将起作用

    @Bean(initMethod="start",destroyMethod="stop")
public org.h2.tools.Server h2WebConsoleServer () throws SQLException {
    return org.h2.tools.Server.createWebServer("-web","-webAllowOthers","-webDaemon","-webPort", "8080");
}

答案 1 :(得分:0)

这也让我感到沮丧。

似乎成功登录到控制台后,H2将设置保存在本地“设置文件”中。对于我的Linux系统,文件为$ HOME / .h2.server.properties。

在该文件中,它记录了“ webAllowOthers = true”,似乎优先于所有application.properties文件。

删除文件后,一切正常,使用了application.properties设置。