有没有办法在保留已添加到其中的其他状态的同时向会话添加状态?对于用例,请考虑来自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 会话中?