【问题标题】:Clear session value in scala在scala中清除会话值
【发布时间】:2014-03-19 14:24:06
【问题描述】:

我正在为一个项目使用播放框架(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做而不是在服务器端做是否合理?

请指教。

【问题讨论】:

    标签: java javascript scala playframework


    【解决方案1】:

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

    所以最好从服务器端更改它。

    斯卡拉

    Ok("Bye").withNewSession
    

    java

    session().clear();
    

    【讨论】:

    • 谢谢.. 这似乎很有意义。 :)
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2015-04-16
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多