有没有办法在会话中添加状态,同时保留已添加到其中的其他状态?对于用例,请考虑http://www.playframework.com/documentation/2.1.3/ScalaActionsComposition
中的一个示例 def Authenticated(f: (User, Request[AnyContent]) ⇒ Result) = {
Action { request ⇒
val result = for {
id ← request.session.get("user")
user ← User.find(id)
} yield f(user, request).withSession(request.session + "newKey" -> "newValue")
result getOrElse Unauthorized
}
}
def index = Authenticated { (user, request) ⇒
Ok("Hello " + user.name).withSession(request.session + "oldKey" -> "oldValue")
}
我在示例中添加了两个“.withSession”调用。在我的测试中,我没有找到一种方法来添加“newKey”而不会消除“oldKey”。
我想到的解决方案都很难看。目前,我的解决方法是在我自己的cookie中保留“newKey”和相关状态,但似乎很麻烦。有没有办法将其添加到Play会话?