scala – 我可以在Play Framework 2中返回动作之前设置cookie吗
发布时间:2020-12-16 09:54:31 所属栏目:安全 来源:网络整理
导读:我知道我可以在返回动作时在Ok(…).withCookies(…)中设置cookie.但是我想知道是否有办法通过操纵请求对象来设置一些cookie.这样我就可以在我的模型中设置一些cookie,而我的控制器只需要将它们发回去. 解决方法 我这样做只是作为练习,并且还表明Play框架非常
我知道我可以在返回动作时在Ok(…).withCookies(…)中设置cookie.但是我想知道是否有办法通过操纵请求对象来设置一些cookie.这样我就可以在我的模型中设置一些cookie,而我的控制器只需要将它们发回去.
解决方法
我这样做只是作为练习,并且还表明Play框架非常灵活,并且它在任何意义上都不会限制你.我想出了如何纯粹从Play源代码中做到这一点,它非常干净且易于阅读.这不是使用cookie或在Play中使用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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |