我正在尝试设置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之后
答案 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设置。