【发布时间】:2014-04-24 20:14:15
【问题描述】:
我正在尝试制作一个查找 X-Forwarded-Proto 标头的 ScalaInterceptor,所以基本上如果它在生产中或在代理后面,那么 Play!自动重定向到 SSL。
我在编译这段代码时遇到了问题,我也不确定这是否适用于 SecureSocial 插件。我们没有在 SecureSocial.conf 中设置 SSL=true 的具体原因我不会在此详述。
这是我的 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] ^
非常感谢您的帮助!
【问题讨论】:
标签: scala playframework playframework-2.2 securesocial