拦截请求并添加Cookie

时间:2015-10-15 06:51:20

标签: playframework

我想拦截对我的播放后端的所有请求,并为他们添加自定义Cookie。我知道响应有withCookie方法,但我无法找到任何类似的请求。此外,在请求中处理cookie的所有工具似乎只读,作为一个完全新手玩我被卡住了

我需要这个,因为我们正在将现有的网络应用程序迁移到不允许使用Cookie的基于cordova的移动应用程序。我们的身份验证系统基于会话cookie。我已经能够以json格式发送会话ID,我想将其作为标头发送,如果需要,在Play中的过滤器或拦截器上生成会话cookie,这样我就不需要在后端更改我们的身份验证系统。 / p>

GlobalSettings或Play Filter都是拦截请求的好选择,但我仍然不知道如何添加cookie。任何人都可以给我一个小样本或解释我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:1)

看来我有点傻。

我可以使用Cookie http标头轻松提供我想播放的所有Cookie,因此无需在此处拦截任何请求。

对不起噪音

答案 1 :(得分:0)

我今天遇到了同样的问题,花了很多时间试图解决它。这是我的解决方案(通过实现Request类)

  1. 用法示例
  2. val newRequest = new MockRequestImpl(request) return block(newRequest)

    1. 类MockRequestImpl定义
    2. `

      class MockRequestImpl[A](req: Request[A]) extends Request[A] {
        override val connection: RemoteConnection = req.connection
        override val method: String = req.method
        override val target: RequestTarget = req.target
        override val version: String = req.version
        override val headers: Headers = req.headers
        override val attrs: TypedMap = req.attrs
        override val body: A = req.body
        // override cookies
        override def cookies = Cookies(Seq(Cookie("SessionId","00000000")))
      }
      

      `