Grails3默认情况下强制使用https

Grails3默认情况下强制使用https,grails,run-app,Grails,Run App,我正在开发一个Grails3应用程序。我想强制run应用程序默认使用https。有几个帖子可以追溯到一年前,展示了默认情况下强制使用https的可能方法。i、 e使用别名,或使用run-app-https命令 我把这个问题重新提出来,看看是否有人在以前的文章中没有使用显式方法的情况下默认运行https。当然,对于那些总是希望在默认情况下使用https运行应用程序的人来说,无论是通过cli还是IDE,这都是一个理想的功能。我们是否可以在runapp命令之前将其作为参数传递,这样就不必在不同的使用环

我正在开发一个Grails3应用程序。我想强制run应用程序默认使用https。有几个帖子可以追溯到一年前,展示了默认情况下强制使用https的可能方法。i、 e使用别名,或使用run-app-https命令

我把这个问题重新提出来,看看是否有人在以前的文章中没有使用显式方法的情况下默认运行https。当然,对于那些总是希望在默认情况下使用https运行应用程序的人来说,无论是通过cli还是IDE,这都是一个理想的功能。我们是否可以在runapp命令之前将其作为参数传递,这样就不必在不同的使用环境中显式地声明它

例如:

我尝试编辑构建文件以传递jvm参数,但没有成功

bootRun {
    jvmArgs = "-D-https"
}

为了实现这一目标,我转向了另一种方法。这个问题可以通过以下文章中的说明来解决:

与-https选项不同,使用这种方法,我们需要创建自己的密钥库文件并将其存储在某处。我们还可以使用grails生成的密钥库,默认情况下它位于build目录中。但是,我们必须将其位置移动到一个更永久的位置,因为构建目录可以被清理。注意:您可以通过检查bootRun中传递的systemProperties来获取密钥库的密码和数据

bootRun {
    print systemProperties
}
我的产出如下:

endpoints.shutdown.enabled:true, env:development, full.stacktrace:false, grails.env:development, grails.full.stacktrace:false, info.app.grailsVersion:3.1.2, info.app.name:coolio, info.app.version:0.1, interactive.mode.enabled:true, run.active:true, server.port:8443, server.ssl.key-password:123456, server.ssl.key-store:./build/ssl/keystore, server.ssl.key-store-password:123456, verbose:false
我的配置没有作者所示的确切属性,而是混合了仅需要的部分:

private static Connector getSslConnector() {
    def dir = System.getProperty("user.dir")
    Connector connector = new Connector();
    connector.setPort(8443);
    connector.setSecure(true);
    connector.setScheme("https");
    connector.setAttribute("keystorePass", "coolio");
    connector.setAttribute("keystoreFile", dir + "/.keystore");
    connector.setAttribute("clientAuth", "false");
    connector.setAttribute("protocol", "HTTP/1.1");
    connector.setAttribute("sslProtocol", "TLS");
    connector.setAttribute("maxThreads", "200");
    connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");
    connector.setAttribute("SSLEnabled", true);
    return connector;
}
注意,原始post将协议属性设置为:

connector.setAttribute("protocol", "org.apache.coyote.http11.Http11AprProtocol");
我将属性设置为:

connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");
除此之外,如前一篇文章所示,将连接器连接到tomcat服务,所有这些都应按预期工作。您现在可以运行应用程序,同时使用http和https