【发布时间】: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