Play(Scala)2.5.Xを使用するようにサービスをアップグレードしています。私はすべての回答にフィルタを適用することに固執しています。
次は私が「utils.SimpleHttpRequestHandler」で行われ、期待通りに動作している各要求を認証していますapplication.conf
再生中のフィルタを作成する2.5.X
play.http.requestHandler = "utils.SimpleHttpRequestHandler"
play.http.filters="utils.CustomFilter"
に追加されたエントリです。ただし、フィルターを使用して応答にヘッダーを追加することはできません。
次は私の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*/
}
、私は、唯一の問題を警告またはエラーを取得しておりませんフィルタが機能していないということです。 私は何が欠けているのか、私は何をしていますか?
ご意見ありがとうございます。 'Filter'code' 更新application.confエントリ play.http.filters = "utils.Filters" 延び:は、customFilter @Inject()(Materializer暗黙ヴァルマット)code'class' : 私はにCstomFilterを変更しました@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@? – Shailesh
あなたの提案をありがとう。クラスは、customFilter @Inject()(暗黙ヴァルマット:Materializer)は私がは、customFilterを変更
フィルタ
更新application.confエントリplay.http.filters = "utils.Filters"
クラスは(@Injectをフィルタリングして延び()は、customFilter :CustomFilter)extends DefaultHttpFilters(customFilter)
しかし、ヘッダーは応答に追加されません。
– Shailesh
ご意見ありがとうございます。 CustomFilterを次のように変更しました:class CustomFilter @Inject()(暗黙的なvalマット:マテリアライザー)extends filter 更新されたapplication.confエントリplay.http.filters = "utils.Filters" クラス@Inject()(customFilter:CustomFilter) DefaultHttpFilters(customFilter) しかし、ヘッダーは応答に追加されません。 – Shailesh