会话数据在模板中呈现不正确

时间:2011-09-08 22:50:52

标签: templates session playframework session-variables

当用户进行身份验证时,我会在会话中存储user.displayName

session.put("udn", user.displayName);

,模板使用:

呈现它
${session.udn}

但奇怪的事情发生了:

  1. 以“Sam”身份登录,显示“Sam”;
  2. 注销;
  3. 以“Jim”身份登录,同时显示“Sam”!
  4. 重启播放;
  5. 以“Jim”身份登录,显示“Jim”;
  6. 注销;
  7. 以“Sam”身份登录,同时显示“Jim”!
  8. 也就是说,它始终显示第一个登录用户的displayName。

    在session.put之后调试:

    session.put("udn", user.displayName);
    

    Logger.debug("udn:\t" + session.get("udn"));

    正确打印:

    • 以Sam身份登录,打印“udn:Sam”;
    • 以Jim身份登录,打印“udn:Jim”

    另外,我检查了cookie: PLAY_SESSION包含%00udn%3A +正确值+ %00

    • 以Sam身份登录,PLAY_SESSION包含%00udn%3ASam%00
    • 以Jim身份登录,PLAY_SESSION包含%00udn%3AJim%00

    如何显示正确的值? (我的播放应用取决于播放1.2.3和安全模块)

1 个答案:

答案 0 :(得分:0)

您应该在模板中使用${session.get("udn")}implicit session变量只是play.mvc.Scope.Session的一个实例;没有任何神奇的地方允许像${session.udn}这样的语法。我不确定为什么打印任何东西。