Я пытаюсь создать ScalaInterceptor, который ищет заголовок X-Forwarded-Proto
, поэтому в основном, если он в производстве или за прокси-сервером, тогда Play! автоматическая переадресация на SSL.Использование ScalaInterceptors для захвата HTTPS в игре! 2,2?
У меня возникли проблемы с получением этого кода для компиляции, и я также не уверен, будет ли это работать с плагином SecureSocial. Существуют определенные причины, по которым мы не устанавливаем SSL = true в SecureSocial.conf, что я не буду здесь заниматься.
Вот что у меня в Global.scala
def WithHttpsRedirect[A](action: Action[A]): Action[A] = {
Action(action.parser) { request =>
val result = action(request)
request.headers.get("X-Forwarded-Proto").collect {
case "https" =>
result
case "http" =>
val url = "https://"+request.host+request.uri
Redirect(url)
} getOrElse {
result
}
}
}
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
super.onRouteRequest(request).map { handler =>
handler match {
case a: Action[_] => WithHttpsRedirect(a)
case _ => handler
}
}
}
Я получаю ошибку компилятора после getOrElse
:
[error] found : scala.concurrent.Future[play.api.mvc.SimpleResult]
[error] required: play.api.mvc.Result
[error] result
[error] ^
Ваша помощь очень ценится!
Я на самом деле просто создал расширенный фильтр, я отправлю его :) – crockpotveggies