我正在尝试将一个简单的字符串添加到 Play session 中,但它不起作用。为了进行测试,我编写了一个小 Controller 函数,它首先向 session 添加一个字符串,然后打印 session 包含的所有元素,但它始终为空。
def foo = Action { request =>
request.session + ("token", "foobar")
request.session.data.foreach{ keyVal => println("\tkey value pair: " + keyVal._1 + ", " + keyVal._2)}
Ok("just a test")
}
我做错了什么?我是否需要通过 application.conf 或其他方式激活某些东西?
最佳答案
其实session也是一个不可变的结构。
request
中存储的 session
对象确实有一个 +
方法,后者通过返回 Session
的新实例。保持 request.session
不变。
进一步思考,我们可以断言更新的 session 只有在另一个请求-响应事务中重用时才有意义...
因此更新 session 的方法是在构建响应(Result
in Play)时更新它,就像这样:
Ok("just a test").withSession(request.session + ("token", "foobar"))
这将在您的 cookie 中添加新的 session 字段,该字段将在下一次交易(即请求-响应)中可用。
关于scala - 无法将元素添加到 Play session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868414/