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

Templates 会话数据在模板中呈现不正确,templates,session,playframework,session-variables,Templates,Session,Playframework,Session Variables,当用户进行身份验证时,我在会话中存储user.displayName: session.put("udn", user.displayName); 模板使用以下方式渲染它: ${session.udn} 但奇怪的事情发生了: 以“Sam”登录,显示“Sam” 注销 以“Jim”登录,也显示“Sam” 重新开始播放 以“Jim”登录,显示“Jim” 注销 以“Sam”登录,也显示“Jim” 也就是说,它始终显示第一个登录用户的displayName 在会话结束后进行调试。放置: session

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

session.put("udn", user.displayName);
模板使用以下方式渲染它:

${session.udn}
但奇怪的事情发生了:

  • 以“Sam”登录,显示“Sam”
  • 注销
  • 以“Jim”登录,也显示“Sam”
  • 重新开始播放
  • 以“Jim”登录,显示“Jim”
  • 注销
  • 以“Sam”登录,也显示“Jim” 也就是说,它始终显示第一个登录用户的displayName

    在会话结束后进行调试。放置:

    session.put("udn", user.displayName);
    
    Logger.debug(“udn:\t”+session.get(“udn”)

    它可以正确打印:

    • 以Sam身份登录,打印“udn:Sam”
    • 以Jim身份登录,打印“udn:Jim”
    此外,我还检查了cookie: 播放会话包含
    %00udn%3A
    +正确值+
    %00

    • 以Sam身份登录,播放会话包含
      %00udn%3ASam%00
    • 以Jim身份登录,播放会话包含
      %00udn%3AJim%00

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

    您应该在模板中使用
    ${session.get(“udn”)}
    session
    变量只是的一个实例;这里没有允许类似
    ${session.udn}
    的语法的魔法。我不知道为什么会打印任何东西