我有一个使用 Heroku 的 SSL 端点在 Heroku 上运行的 Play Framework 应用程序。
我想让所有页面SSL
仅通过。
最好的方法是什么?
到目前为止,我最好的解决方案是onRouteRequest
在我的GlobalSettings
和路由non-SSL
请求中使用一个特殊的重定向处理程序:
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
if (Play.isProd && !request.headers.get("x-forwarded-proto").getOrElse("").contains("https")) {
Some(controllers.Secure.redirect)
} else {
super.onRouteRequest(request)
}
}
和
package controllers
import play.api.mvc._
object Secure extends Controller {
def redirect = Action { implicit request =>
MovedPermanently("https://" + request.host + request.uri)
}
}
有没有办法完全从内部做到这一点GlobalSettings
?或者更好的东西?