我在Heroku上的应用程序出现问题,因为会话不会持续存在。具体来说,每次发出请求时,flask的SecureCookieSession对象都是空的。将此与在localhost上运行我的应用程序进行对比,其中SecureCookieSession的内容以其应有的方式持续存在。
我也使用flask-login + flask-seasurf,但我很确定问题发生在flask / gunicorn / heroku之间。
以下是描述类似问题的三个问题:
除了我不在这里处理AJAX或多个工作人员(它是一个单独的heroku免费dyno,在Procfile中只有一行)。我确实感觉使用server side sessions with redis或从Heroku切换到类似EC2的东西可能会解决我的问题。
此外,如果有帮助https://gitlab.com/collectqt/quirell/tree/develop,请点击我的git回购。我用
测试会话内容def _before_request(self):
LOG.debug('SESSION REQUEST '+str(flask.session))
def _after_request(self, response):
LOG.debug('SESSION RESPONSE '+str(flask.session))
return response
答案 0 :(得分:2)
通过一些外部帮助解决了,主要是通过更改密钥来使用我想出的随机字符串,而不是os.urandom(24)
如果仅通过简化测试
,更改为服务器端redis会话也会有所帮助答案 1 :(得分:1)
如果其他人遇到此问题,请检查APPLICATION_ROOT
配置变量。我最近使用反向代理将Flask应用程序部署到nginx下的子目录中,并将{{1}}变量设置为破坏了Flask的会话。因此,Cookies没有被设置在正确的路径下。