2017-08-02 53 views
0

如果Cookie不存在,我想爲所有請求和結果添加特定的Cookie。我知道我可以對結果使用withCookies,但我不想檢查我的控制器方法中的每個請求並將其添加到每個結果。有沒有辦法做到這一點?Play Framework 2.6.x如果Cookie不存在,如何爲每個請求添加特定的Cookie

+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

你想改變控制器到任何包你在你的聲明過濾

相關問題