GAE 中未保留 Wicket 会话

发布于 2024-10-24 02:09:10 字数 484 浏览 3 评论 0原文

我有一个非常基本的 Wicket 应用程序,我正在尝试将其部署到 GAE。按照步骤 此处 并在创建时绑定会话对象。

我无法保存会话中的任何状态。我的会话类扩展了 AuthenticatedWebSession。登录页面通过 AuthenticatedWebSession.authenticate() 进行身份验证,该方法始终返回 true 并在成员变量中设置用户名。但后续页面会在会话中看到空用户名,并且 AuthenticatedWebSession.isSignedIn() 返回 false。

我似乎确实在维护一个会话,因为每个页面都会看到相同的 Session.getId() 值。

有什么想法吗?

蒂亚! 克里斯

I have a very basic Wicket app that I'm trying to deploy to GAE. I have the basics working, after following the steps here and also binding the session object upon creation.

I'm having trouble saving any state in a session. My session class extends AuthenticatedWebSession. The login pages authenticates via AuthenticatedWebSession.authenticate(), which always returns true and sets the username in a member variable. But subsequent pages see a null username in the session and AuthenticatedWebSession.isSignedIn() returns false.

I do seem to be maintaining a session, as every page will see the same value for Session.getId().

Any ideas?

TIA!
Chris

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

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

发布评论

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

评论(2

℡寂寞咖啡 2024-10-31 02:09:10

我的问题在 Wicket 邮件列表上得到了回答 - 答案是我需要在身份验证后(或在对会话成员进行任何其他更改后)调用 Session.dirty() 以确保它被保存。显然,在我的开发环境中,会话总是被保存,但 GAE 更加优化,因此只保存脏会话。

My question was answered on the Wicket mailing list - the answer is that I needed to call Session.dirty() after authenticating (or after any other change to the session members) to ensure it would be saved. Apparently in my development environment, sessions were always saved but GAE is more optimized and thus only saving dirty sessions.

因为看清所以看轻 2024-10-31 02:09:10

我花了大约 2 天的时间研究会话和 cookie 的兔子洞,我终于意识到我的问题是这样的:

app.secret_key = os.urandom(50)

每次实例启动时,它都会生成一个新密钥,现在用户会话丢失了。

您需要将密钥设置为静态

app.secret_key = "really-complex-key-that-is-static-and-never-changes"

希望这是您的问题

I spent about 2 days devling down the rabbit hole of sessions and cookies and I finally realised my issue was this:

app.secret_key = os.urandom(50)

Every time an instance boots up it generates a new key and now the users session is lost.

You need to make your key static

app.secret_key = "really-complex-key-that-is-static-and-never-changes"

Hopefully this is your issue to

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