Java Wicket会话未在GAE中持久化
我有一个非常基本的Wicket应用程序,我正试图部署到GAE。在遵循这些步骤并在创建会话对象时绑定会话对象之后,我已经完成了基础工作 在会话中保存任何状态时遇到问题。我的会话类扩展了AuthenticatedWebSession。登录页面通过AuthenticatedWebSession.authenticate()进行身份验证,它始终返回true并在成员变量中设置用户名。但是后续页面在会话中看到一个空用户名,AuthenticatedWebSession.isSignedIn()返回false 我似乎在维护一个会话,因为每个页面都会看到session.getId()的相同值 有什么想法吗 蒂亚!Java Wicket会话未在GAE中持久化,java,google-app-engine,session,wicket,Java,Google App Engine,Session,Wicket,我有一个非常基本的Wicket应用程序,我正试图部署到GAE。在遵循这些步骤并在创建会话对象时绑定会话对象之后,我已经完成了基础工作 在会话中保存任何状态时遇到问题。我的会话类扩展了AuthenticatedWebSession。登录页面通过AuthenticatedWebSession.authenticate()进行身份验证,它始终返回true并在成员变量中设置用户名。但是后续页面在会话中看到一个空用户名,AuthenticatedWebSession.isSignedIn()返回false
Chris我的问题在Wicket邮件列表上得到了回答-答案是我需要在验证(或对会话成员进行任何其他更改)后调用Session.dirty(),以确保它将被保存。显然,在我的开发环境中,会话总是被保存的,但GAE更优化,因此只保存脏会话。我的问题在Wicket邮件列表上得到了回答-答案是我需要在验证后(或在对会话成员进行任何其他更改后)调用Session.dirty(),以确保会话被保存。显然,在我的开发环境中,会话总是被保存的,但GAE更优化,因此只保存脏会话。我花了大约2天的时间来开发会话和cookie,最后我意识到我的问题是:
app.secret_key = os.urandom(50)
每次实例启动时,它都会生成一个新密钥,现在用户会话将丢失
您需要将密钥设置为静态
app.secret_key = "really-complex-key-that-is-static-and-never-changes"
希望这是你的问题我花了大约两天的时间在会议和饼干的兔子洞里摸索,最终我意识到我的问题是:
app.secret_key = os.urandom(50)
每次实例启动时,它都会生成一个新密钥,现在用户会话将丢失
您需要将密钥设置为静态
app.secret_key = "really-complex-key-that-is-static-and-never-changes"
希望这是你要解决的问题