【问题标题】:Deployed Keter App Logs Users Out With a New Keter Bundle已部署的 Keter 应用程序使用新的 Keter Bundle 将用户注销
【发布时间】:2013-12-09 16:22:55
【问题描述】:

到目前为止,Keter 一直很棒。对于我的小玩具项目,我曾经在生产服务器上创建 keter 包并将其推送到 keter 的传入目录,一切正常。

现在我想学习如何设置临时环境,因此我尝试在临时服务器上编译我的包(它是生产服务器的映像副本)。当我将此捆绑包推送到我的生产服务器(通过 scp)时,它会注销已登录的用户。重新登录后应用程序本身很好。

发生了什么变化:

  • 一些模板代码发生了变化,但没有太大变化,并且在之前在生产服务器上编译时这样的变化很好
  • Yesod 的 settings.yml 更改为使用暂存服务器的 IP 地址进行开发测试
  • Keter.yaml 未修改。

我做错了什么?为什么 Keter 关心我的 .keter 包的创建位置?有没有办法在不中断登录用户的情况下创建这些捆绑包?

谢谢!

【问题讨论】:

    标签: haskell yesod


    【解决方案1】:

    问题很可能是每次部署您的应用时都会创建一个新的 client_session_key 文件。相反,您需要生成一次密钥文件并重复使用它。这通常由 Yesod 脚手架站点正确处理,但提供了 makeSessionBackend 的实现,将密钥文件存储在 config 中。

    您当前对makeSessionBackend 的实现是什么?您的 keter 捆绑包中是否包含文件 config/client_session_key.aes

    【讨论】:

    • 哇,你太棒了!我打开了我的 Keter 包(旧的和新的),我确实在 client_session_key.aes 中看到了不同的内容!我正在使用一个脚手架站点,它有这个代码makeSessionBackend _ = fmap Just $ defaultClientSessionBackend (7 * 24 * 60 * 60) "config/client_session_key.aes"。我应该如何改变它?默认值是否与生产服务器始终重新生成相同密钥的主机名相关联?
    • 没关系。发现问题!我的.gitignore 中有aes file,因此它不会被推送到登台服务器。当我需要创建捆绑包时,我将手动复制它。感谢您指出问题!
    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多