2017-08-02 6 views
0

クッキーが存在しない場合は、すべてのリクエストと結果に特定のクッキーを追加したいと思います。私は結果にwithCookiesを使用することができると理解していますが、コントローラメソッド内のすべての要求をチェックしてすべての結果に追加したくありません。これを行う方法はありますか?Play Framework 2.6.xクッキーが存在しない場合は、すべてのリクエストに特定のクッキーを追加する方法

+0

ます。https:// www.playframework.com/documentation/2.6.x/ScalaHttpFilters – danielnixon

+0

@danielnixon私は動作合成を使用していますが、これを動作させることができません。あなたは例を挙げることができますか? – decapo

+0

いいえ、フィルタは動作合成とは異なります。私はこれを試してみましょう。 – decapo

答えて

1

他の誰かがこれを突き抜けてアクション構成を使用しようとすると、フィルタで簡単に達成できました。

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

をこの行を追加します

関連する問題