会话数据在模板中渲染不正确

发布于 2024-12-03 10:23:09 字数 934 浏览 1 评论 0原文

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

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

并且模板使用以下方式呈现它:

${session.udn}

但奇怪的事情发生了:

  1. 以“Sam”身份登录,显示“Sam”;
  2. 注销;
  3. 以“Jim”身份登录,也显示“Sam”!
  4. 重新开始比赛;
  5. 以“Jim”登录,显示“Jim”;
  6. 注销;
  7. 以“Sam”身份登录,也显示“Jim”!

也就是说,它始终显示第一个登录用户的显示名称。

在 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 包含
  • 以 Jim 身份登录的 %00udn%3ASam%00, PLAY_SESSION 包含 %00udn%3AJim%00

如何显示正确的值? (我的 Play 应用程序依赖于 Play 1.2.3 和安全模块)

I store user.displayName in the session, when users authenticate:

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

and the template renders it using:

${session.udn}

but strange things occur:

  1. login as "Sam", display "Sam";
  2. logout;
  3. login as "Jim", display "Sam", too!
  4. restart play;
  5. login as "Jim", display "Jim";
  6. logout;
  7. login as "Sam", display "Jim", too!

That is, it always display the first logged in user's displayName.

debug just after the session.put:

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

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

it prints correctly:

  • login as Sam, prints "udn:Sam";
  • login as Jim, prints "udn:Jim"

also, I checked the cookie:
PLAY_SESSION contains %00udn%3A + correct value + %00:

  • login as Sam, PLAY_SESSION contains %00udn%3ASam%00
  • login as Jim, PLAY_SESSION contains %00udn%3AJim%00

How do I display the correct value? (my play app depends on play 1.2.3 & Secure module)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

謸气贵蔟 2024-12-10 10:23:09

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

You should be using ${session.get("udn")} in your template. The implicit session variable is just an instance of play.mvc.Scope.Session; there's no magic in place that would allow syntax like ${session.udn}. I'm not sure why that prints anything at all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文