4

我目前有一个正在开发的应用程序,我正在云中使用(Jelastic)。我已将 SSL 证书添加到我的云环境中,并且希望现在能够在某些页面上使用 https。我已经实现了以下方法:

方法一:

grails.plugins.springsecurity.secureChannel.definition = [
   '/login/**':         'REQUIRES_SECURE_CHANNEL'
]

方法二:

grails.plugins.springsecurity.secureChannel.definition = [
   '/login/**':         'REQUIRES_SECURE_CHANNEL'
]

grails.plugins.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true
grails.plugins.springsecurity.secureChannel.secureHeaderName = 'X-Forwarded-Proto'
grails.plugins.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugins.springsecurity.secureChannel.insecureHeaderName = 'X-Forwarded-Proto'
grails.plugins.springsecurity.secureChannel.insecureHeaderValue = 'https'

因此,对于方法 1,当您转到 HTTP 中的索引页面然后尝试转到登录页面时,它会部分起作用,您将看到一条错误消息:

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

然而,方法 2 似乎根本不起作用,当我转到 HTTP 上的登录页面时,它并没有像我预期的那样重定向我,而且似乎在 HTTP 上工作,这很奇怪。

正如我提到的,这个解决方案托管在 Jelastic 中,所以不确定这是否会导致一些问题,但提供的任何帮助都会很棒。

提前致谢

4

1 回答 1

2

我使用以下配置部署到产品服务器。然后它开始在https上。我正在使用 jdk 1.8 和 Tomcat 8。

grails.plugin.springsecurity.portMapper.httpPort = 80
grails.plugin.springsecurity.portMapper.httpsPort = 443
grails.plugin.springsecurity.secureChannel.secureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugin.springsecurity.secureChannel.insecureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.insecureHeaderValue = 'https'
grails.plugin.springsecurity.auth.forceHttps = true
grails.plugin.springsecurity.secureChannel.definition = [
        '/**':               'REQUIRES_SECURE_CHANNEL'
]
于 2015-07-24T14:15:16.467 回答