gpt4 book ai didi

scala - 我可以在 Play Framework 2 中返回操作之前设置 cookie 吗?

转载 作者:行者123 更新时间:2023-12-04 18:44:00 26 4
gpt4 key购买 nike

我知道我可以在 Ok(...).withCookies(...) 中设置 cookie返回 Action 时。但是我想知道是否有办法通过操作 request 来设置一些 cookie。目的。这样我就可以在我的模型中设置一些 cookie,而我的 Controller 只需要将它们发回。

最佳答案

我这样做只是作为练习,也是为了表明 Play 框架非常灵活,它不会在任何意义上限制你。我完全从 Play 源代码中想出了如何做到这一点,它非常干净且易于阅读。这是 而不是 在 Play 中使用 cookie 或实际上使用 HttpRequest 对象的首选方式。正如 Jatin 建议您应该将您的 cookie 解码为适当的模型,将这些模型传递给您的服务,然后将您的服务结果转换为 play.api.mvc.Result,从而保持您的 http 和业务逻辑层分离。

这是代码(您可以看到 Headers 对象不打算以这种方式使用):

import play.api.http.HeaderNames.COOKIE

val cookies = Cookies(request.headers.get(COOKIE)).cookies

val myCookies = cookies + ("cookieName" -> Cookie("cookieName", "cookieValue"))

val headersMap = request.headers.toMap

val myHeaderMap = headersMap +
(COOKIE -> Seq(Cookies.encode(myCookies.values.toSeq)))

val myHeaders = new play.api.mvc.Headers {
val data:Seq[(String, Seq[String])] = myHeaderMap.toSeq
}

val modifiedRequest = request.copy(headers = myHeaders)

关于scala - 我可以在 Play Framework 2 中返回操作之前设置 cookie 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18088134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com