Scala と Play 2.5.10 を使用して、構成用に次の再利用可能なアクションを実装し、応答ヘッダーを変更してブラウザーでのキャッシュを無効にすることを目的としました。
import play.api.http.HeaderNames
import play.api.mvc._
import scala.concurrent.Future
import scala.util.{Failure, Success}
import scala.concurrent.ExecutionContext.Implicits.global
case class NoCache[A](action: Action[A]) extends Action[A] with HeaderNames {
def apply(request: Request[A]): Future[Result] = {
action(request).andThen {
case Success(result) => result.withHeaders(
(CACHE_CONTROL -> "no-cache, no-store, must-revalidate"),
(PRAGMA -> "no-cache"),
(EXPIRES -> "0")
)
case Failure(result) => result
}
}
lazy val parser = action.parser
}
次に、コントローラー アクションの実装で次のように再利用します。
def link = NoCache {
deadbolt.SubjectPresent()() { implicit request =>
Future {
Ok(views.html.account.link(userService, auth))
}
}
}
実装にブレークポイントを設定するNoCache
と、正しく実行されますが、Web Developer Firefox プラグインを使用してネットワーク トラフィックを監視すると、応答ヘッダーに「キャッシュなし」の変更が含まれていないことがわかります...何が間違っていますか?