Spring.h2.console.settings.web-Allow-为我禁用访问权限的其他人

f45qwnt8  于 2022-10-23  发布在  Spring
关注(0)|答案(2)|浏览(91)

我正在尝试设置spring.h2.console.settings.web-allow-others=false,以使控制台仅在本地计算机上可用。如果我在IntelliJ中运行我的应用程序,它会运行得很好,但一旦我构建并运行JAR,这个设置似乎就没有效果,默认设置为Enable。
我不相信我有任何参数在启动时传递给JAR,但我想知道是否有其他东西可以覆盖这个设置。
因此,我的应用程序中有以下内容。


# H2

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

# spring.h2.console.settings.web-allow-others=true

如本例所示,它已被注解掉,我预计它将默认为FALSE。我试着取消评论并将其设置为FALSE,但没有效果。我尝试使用webAllowOthers的H2正常配置值,但没有效果。
如果我将spring.h2.console.Enabled设置为FALSE,我将不能再访问控制台。我觉得这至少表明我编辑的文件是正确的。
我确实有我们的测试用例使用的辅助测试.Properties,但我也尝试将该文件设置为False并将其删除。我曾想过也许是最后一场胜利什么的。
我不知道该怎么做,我唯一想的就是一个错误或者其他一些可以覆盖这些设置的配置。
我使用的是SpringBoot 2.0.0.RELEASE和DB2.4.196
更新:在进一步的测试中,如果我构建JAR并启用控制台并禁用Web-Allow-Other,似乎可以很好地工作。但一旦我启用了Web-Allow-Other,它就再也不会阻止它了,即使在Web-Allow-Other=False之后也是如此

nc1teljy

nc1teljy1#

在代码中添加下面的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");
}
a0zr77ik

a0zr77ik2#

这也让我感到沮丧。
看起来,在成功登录到控制台后,H2将设置保存在本地的“设置文件”中。对于我的Linux系统,该文件是$HOME/.h2.server.properties。
在该文件中,它记录了‘webAllowOthers=True’,它似乎优先于任何Applation.Properties文件。
删除该文件后,一切都按预期进行,并遵守了应用程序的.properties设置。

相关问题