Wicket会议未在GAE中持续存在

时间:2011-03-18 15:34:44

标签: java google-app-engine session wicket

我有一个非常基本的Wicket应用程序,我正在尝试部署到GAE。在完成步骤here并在创建时绑定会话对象之后,我已经完成了基础工作。

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

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

有什么想法吗?

TIA! 克里斯

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

app.secret_key = os.urandom(50)

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

您需要将密钥设为静态

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

希望这是您要解决的问题