【问题标题】:Wicket session not persisted in GAE检票会话未在 GAE 中持续存在
【发布时间】:2011-07-18 06:41:12
【问题描述】:

我有一个非常基本的 Wicket 应用程序,我正在尝试将它部署到 GAE。在遵循here 的步骤并在创建时绑定会话对象之后,我已经具备了基础知识。

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

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

有什么想法吗?

TIA! 克里斯

【问题讨论】:

    标签: java google-app-engine session wicket


    【解决方案1】:

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

    app.secret_key = os.urandom(50)
    

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

    您需要将密钥设为静态

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

    希望这是您的问题

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-06-11
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2018-06-25
        • 1970-01-01
        相关资源
        最近更新 更多