在playframework 2中,会话和cookie在下一个会话中被修改,但不是当前会话。
像代码一样:Ok(views.html.something(“来自Scala的Hello”))。withSession((“user” - >“Admin”))
本次会议将在下届会议上进行修改和介绍。我可以制作一些当前会话中可用的Cookie吗?
我不想使用参数来修改它,原因是如果我使用参数作为用户登录和角色识别标签,则会添加所有页面控制参数表。我希望将其作为AOP,在会话中注入,然后只查看会话以查找请求来自何处以及如何在模板框架中而不是在内容中响应它。 对于这个问题,任何人都有更好的解决方案,也欢迎发帖。
答案 0 :(得分:0)
Play的会话是存储在cookie中的客户端会话,并在每次响应时发送给客户端。由于您只能在实际应答时修改会话,因此您可能无法在该特定操作中使用当前操作(请求 - 响应周期)中要使用的任何更改。
如果您的目标是查看模板内部的会话,那么我建议您明确地将会话的复制版本传递给模板,并将其设置为新会话。
控制器操作:
def someAction = Action { implicit request =>
val updatedSession = request.session.copy(Map("user" -> "Admin")
Ok(views.html.something("Hello from Scala")(updatedSession)).withSession(updatedSession)
}
模板:
@(text: String)(implicit session: Session)
<h1>@text</h1>
@session.get("user").map { u=>
Your role is: @u
}