在Play Framework 2.x过滤器中添加Cookie?

时间:2013-10-22 18:20:22

标签: scala playframework-2.0

是否可以在Global Framework中的Play Framework的doFilter方法中添加cookie?

我试过了:

override def doFilter(action: EssentialAction): EssentialAction = EssentialAction { request =>
  if (request.queryString.contains("q")) {
    action.apply(request).map(_.withCookies(
      Cookie("q", request.queryString.get("q").get(0), 3600)
    ))
  }
}

但cookie不会被发送到浏览器。

1 个答案:

答案 0 :(得分:1)

我正在使用Playframework 2.2并使用类似的东西:

import play.api.mvc._
import play.api._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

object ResponseFilter extends Filter {
  def apply(next: (RequestHeader) => Future[SimpleResult])(rh: RequestHeader) = {
    next(rh).map(_.withHeaders("Access-Control-Allow-Origin" -> "*").as("application/json; charset=utf-8"))
  }
}

我的Global对象看起来像这样:

import play.api._
import play.api.mvc._
import service.ResponseFilter

object Global extends WithFilters(ResponseFilter) with GlobalSettings

这对我来说很好。所以我想你可以用_.withHeaders(...)部分替换_.withCookies(...)部分,这对你也有用。

请注意,早期版本的playframework中的情况有所不同