我有一个非常基本的Wicket应用程序,我正在尝试部署到GAE。在完成步骤here并在创建时绑定会话对象之后,我已经完成了基础工作。
我在会话中保存任何状态时遇到问题。我的会话类扩展了AuthenticatedWebSession。登录页面通过AuthenticatedWebSession.authenticate()进行身份验证,该身份验证始终返回true并在成员变量中设置用户名。但后续页面在会话中看到空用户名,AuthenticatedWebSession.isSignedIn()返回false。
我似乎正在维护一个会话,因为每个页面都会看到Session.getId()的相同值。
有什么想法吗?
TIA! 克里斯
答案 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"
希望这是您要解决的问题