Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wicket会话未在GAE中持久化_Java_Google App Engine_Session_Wicket - Fatal编程技术网

Java Wicket会话未在GAE中持久化

Java Wicket会话未在GAE中持久化,java,google-app-engine,session,wicket,Java,Google App Engine,Session,Wicket,我有一个非常基本的Wicket应用程序,我正试图部署到GAE。在遵循这些步骤并在创建会话对象时绑定会话对象之后,我已经完成了基础工作 在会话中保存任何状态时遇到问题。我的会话类扩展了AuthenticatedWebSession。登录页面通过AuthenticatedWebSession.authenticate()进行身份验证,它始终返回true并在成员变量中设置用户名。但是后续页面在会话中看到一个空用户名,AuthenticatedWebSession.isSignedIn()返回false

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

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

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

有什么想法吗

蒂亚!
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"
希望这是你要解决的问题