在scala中清除会话值

时间:2014-03-19 14:24:07

标签: java javascript scala playframework

我正在为项目使用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中进行它而不是在服务器端进行是合理的吗?

请告知。

1 个答案:

答案 0 :(得分:3)

从javascript中删除或更改会话不是一个好主意,因为" Play Framework使用无状态会话" 。服务器端没有存储状态,而是所有状态都存储在会话cookie中。为了验证会话,Play使用密钥对会话进行签名,并在有会话cookie的请求到达时验证签名。如果cookie是从javascirpt修改的,那么签名将不匹配,因此Play会拒绝会话cookie。

因此,从服务器端更改它会更好。

scala

中的

Ok("Bye").withNewSession
java

中的

session().clear();