我目前正在处理我正在使用的应用程序,我在云端使用(Jelastic)。我已将SSL证书添加到我的云环境中,并希望能够在某些页面上使用https。我已经实现了以下方法:
方法1:
grails.plugins.springsecurity.secureChannel.definition = [
'/login/**': 'REQUIRES_SECURE_CHANNEL'
]
方法2:
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中提供的,所以不确定是否会导致一些问题,但提供的任何帮助都会很棒。
提前致谢
答案 0 :(得分:2)
我使用以下配置部署到prod服务器。然后它开始在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'
]