【问题标题】:Heroku keeps forgetting Flask SessionsHeroku 总是忘记 Flask 会话
【发布时间】:2020-01-05 16:13:56
【问题描述】:

我正在 Heroku 中部署 Flask 应用程序,但我的会话出现问题。 问题是会话不会在 heroku 上持续存在。当我用 f12 打开开发工具时,我看到的是,当我登录时,它会正确创建一个 cookie,但它只是通过几个重定向忘记了它,然后返回到主页。 我尝试了一切,但没有任何效果:我将登录名更改为 flask-login,我使用了 heroku 粘性会话,我创建了一个新的 heroku 应用程序,但仍然无法正常工作。在 localhost 中,一切正常,密钥设置正确。

我不知道还能尝试什么。我认为这是一个heroku问题。

这造成的另一个问题是,我在我的 html 中使用 jinja 做了一个 if 语句,以显示用户是否登录时的不同索引,现在它只显示未登录用户的索引:

{% if current_user.is_authenticated %}
{% else %}

这是我的仓库的链接(代码在 app.py 中): https://github.com/deloquito/hero

这里是我的应用程序的链接,供您试用: https://cerobull.herokuapp.com

希望有人能帮我最终找到这个bug,谢谢大家:)

【问题讨论】:

  • 您有already asked several 有关重定向不起作用的问题。每种情况的答案都是 Heroku 的文件系统是短暂的,因此您对其所做的任何更改都会经常丢失。现在你是storing session data on Heroku's filesystem。这听起来是个好主意吗?
  • 此外,我们不会离开现场为您挖掘代码。我现在不应该这样做,但我很好奇你是否又犯了同样的错误。将来,请直接在您的问题中包含所有相关代码此处,作为minimal reproducible example
  • 对不起,我是编码世界的新手。如果会话不在文件系统中,我该如何存储它?
  • 不使用普通 Flask 签名的 cookie/会话的原因是什么?我希望他们能够在 Heroku 上正常工作,因为服务器端没有存储任何内容(只是我认为不会改变的密钥)。
  • 我正在使用普通的烧瓶会话,但 heroku 似乎不能正确支持它们,它们就消失了

标签: session heroku flask jinja2


【解决方案1】:

我在 Heroku 上发现问题是在我的 config.py 中使用 os.urandom() 作为密钥。这不是本地环境的问题,而是导致在 Heroku 上的体验极差。

在 Heroku 中将密钥设置为环境变量为我解决了 Flask 会话不稳定的问题。

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2015-10-28
    • 2012-05-01
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多