0
クッキーが存在しない場合は、すべてのリクエストと結果に特定のクッキーを追加したいと思います。私は結果にwithCookies
を使用することができると理解していますが、コントローラメソッド内のすべての要求をチェックしてすべての結果に追加したくありません。これを行う方法はありますか?Play Framework 2.6.xクッキーが存在しない場合は、すべてのリクエストに特定のクッキーを追加する方法
クッキーが存在しない場合は、すべてのリクエストと結果に特定のクッキーを追加したいと思います。私は結果にwithCookies
を使用することができると理解していますが、コントローラメソッド内のすべての要求をチェックしてすべての結果に追加したくありません。これを行う方法はありますか?Play Framework 2.6.xクッキーが存在しない場合は、すべてのリクエストに特定のクッキーを追加する方法
他の誰かがこれを突き抜けてアクション構成を使用しようとすると、フィルタで簡単に達成できました。
class MyCookieFilter @Inject() (implicit val mat: Materializer, ec: ExecutionContext) extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
nextFilter(requestHeader).map { result =>
requestHeader.cookies.get("myAwesomeCookie") match {
case Some(cookie) => result.withCookies(cookie)
case None => result.withCookies(Cookie("myAwesomeCookie",SecureRandomUtil.generateSecureRandom(255),Some(60*60*24*365)))
}
}
}
}
この例では、フィルタはControllersパッケージに含まれています。 。あなたはあなたがあなたのフィルタを宣言したものは何でもパッケージにコントローラを変更したいあなたのapplication.confファイルで
play.filtersセクションで
enabled += controllers.MyCookieFilter
をこの行を追加します
ます。https:// www.playframework.com/documentation/2.6.x/ScalaHttpFilters – danielnixon
@danielnixon私は動作合成を使用していますが、これを動作させることができません。あなたは例を挙げることができますか? – decapo
いいえ、フィルタは動作合成とは異なります。私はこれを試してみましょう。 – decapo