0
如果Cookie不存在,我想爲所有請求和結果添加特定的Cookie。我知道我可以對結果使用withCookies
,但我不想檢查我的控制器方法中的每個請求並將其添加到每個結果。有沒有辦法做到這一點?Play Framework 2.6.x如果Cookie不存在,如何爲每個請求添加特定的Cookie
如果Cookie不存在,我想爲所有請求和結果添加特定的Cookie。我知道我可以對結果使用withCookies
,但我不想檢查我的控制器方法中的每個請求並將其添加到每個結果。有沒有辦法做到這一點?Play Framework 2.6.x如果Cookie不存在,如何爲每個請求添加特定的Cookie
如果其他人在試圖使用動作組合時碰到這種情況,可以通過過濾器輕鬆實現。
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