【发布时间】:2013-12-01 21:23:41
【问题描述】:
我正在尝试使用动作组合将假用户添加到 Session。
def GuestAction(f: Request[AnyContent] => Result): Action[AnyContent] = {
Action { request =>
var myUser = searchUser(request.session)
if ( myUser == null ) {
myUser = newUser()
}
f(request).withSession("user" -> myUser)
}
}
在我的控制器中有
def action1 = GuestAction { implicit request =>
// My code
Ok()
}
def action2 = GuestAction { implicit request =>
val user = request.session.get("user").get
// My code
Ok()
}
当我打开 Chrome 并浏览指向“action1”的路由,然后浏览指向“action2”的路由时,一切正常:我有一个新用户,它已附加到会话。
相反,当我打开 Chrome 并首先浏览指向“action2”的路由时,我收到一个错误,因为我的“request.session”是空的,这很明显:使用.withSession() 会话附加到@ 987654324@,而不是传入的请求。
因此,为了完成这项工作,我需要将会话键/值对附加到传入请求中 - 就像在 FakeRequest.withSession() 中一样,但在 Request 中没有这样的方法。
为了解决这个问题,您有什么建议?
【问题讨论】:
标签: scala playframework playframework-2.2