我正在为项目使用Play框架(Java版本),我想出了一个清除javascript代码中的会话值的情况。我使用了以下代码,但它没有编译。
$('#btnSubmit').click(function(){
$('#errorMsg').text('');
@session.put("errorMsg",null);// It didn't work
@session().remove("errorMsg");// It didn't work either
}
我知道它在这里使用scala,所以我浏览了文档&在此link中找到了以下方法。
You can remove any value from the incoming session the same way:
Ok("Theme reset!").withSession(
session - "theme")
但我无法完全理解如何通过Javascript完成。在Javascript中是否有相当于session().remove("errorMsg");
的功能?
首先,在Javascript中进行它而不是在服务器端进行是合理的吗?
请告知。
答案 0 :(得分:3)
从javascript中删除或更改会话不是一个好主意,因为" Play Framework使用无状态会话" 。服务器端没有存储状态,而是所有状态都存储在会话cookie中。为了验证会话,Play使用密钥对会话进行签名,并在有会话cookie的请求到达时验证签名。如果cookie是从javascirpt修改的,那么签名将不匹配,因此Play会拒绝会话cookie。
因此,从服务器端更改它会更好。
scala 中的
Ok("Bye").withNewSession
java 中的
session().clear();