【发布时间】:2017-06-27 11:22:55
【问题描述】:
我正在升级我的服务以使用 Play(Scala) 2.5.X。我一直在对所有响应应用过滤器。
以下是我添加到 application.conf 中的条目
play.http.requestHandler = "utils.SimpleHttpRequestHandler"
play.http.filters="utils.CustomFilter"
我正在验证在“utils.SimpleHttpRequestHandler”中完成的每个请求并按预期工作。但是,我无法使用过滤器将标题添加到响应中。
以下是我的 utils.CustomFilter:
@Singleton
class CustomFilter @Inject() (implicit val mat: Materializer) extends DefaultHttpFilters {
def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
nextFilter(requestHeader).map { result =>
result.withHeaders(
PRAGMA -> "no-cache",
CACHE_CONTROL -> "no-cache, no-store, must-revalidate, max-age=0",
EXPIRES -> serverTime
)
}
}
private def serverTime = {
val calendar = Calendar.getInstance()
val dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z")
dateFormat.setTimeZone(calendar.getTimeZone)
dateFormat.format(calendar.getTime())
}
}
以下是我的 utils.SimpleHttpRequestHandler:
@Singleton
class SimpleHttpRequestHandler @Inject() (router: Router) extends HttpRequestHandler {
def handlerForRequest(request: RequestHeader) = {
router.routes.lift(request) match {
case Some(handler) =>
val response = authenticate(request)
response match {
case Ok => (request, handler)
case Forbidden => (request, controllers.Application.forbidden)
case Unauthorized => (request, controllers.Application.unauthorized)
case _ => (request, controllers.Application.badRequest)
}
case None => (request, Action(Results.NotFound))
}
}
/* OTHER HELPER METHOD CODE*/
}
当我运行 play-app 时,我没有收到任何警告或错误,唯一的问题是过滤器不起作用。 我错过了什么或我做错了什么?
【问题讨论】:
标签: scala playframework playframework-2.0