如何删除Finatra上的cookie?

时间:2014-02-24 22:40:09

标签: scala finagle finatra

如何在处理请求并构建响应后删除cookie?

我已经尝试了以下代码,但它似乎不起作用:

get("/login") { request =>
  val message = request.cookies.get("flash-message").map(_.value)
  request.removeCookie("flash-message")
  render.view(LoginView(message)).toFuture
}

我在ResponseBuilder上找不到任何会删除Cookie的方法。

1 个答案:

答案 0 :(得分:0)

事实证明,这样做的方法是通常的“JavaScript”方式。只需创建一个过期的cookie并发回,如下所示:

import com.twitter.finagle.http.Cookie
import com.twitter.util.Duration
import java.util.concurrent.TimeUnit

get("/login") { request =>
  val message = request.cookies.get("flash-message").map(_.value)
  val c = Cookie("flash-message", "")
  c.maxAge = Duration(-10, TimeUnit.DAYS)
  render.view(LoginView(message)).cookie(c).toFuture
}

当然,过去10天只是一个随意的“持续时间”。