Flask 登录会话不工作

Flask Login Sessions Not Working

我在使用 Flask-Login 时遇到问题,由于某种原因,它似乎从我的会话中清除了数据。当我在 Docker 容器中 运行 我在 AWS 上的应用程序时,这个问题似乎只发生在我身上。当这是 运行 本地的 Docker 容器时,似乎没有任何问题。容器启动使用 supervisord 启动应用程序以启动 nginxgunicorn 服务器。

我正在使用 Flask-Login 和 SQLAlchemy 来处理我的用户登录。我正在我的用户模型中使用 get_auth_token() 方法创建一个自定义令牌,该模型将带有一些会话数据的令牌存储在我的数据库中。我使用 token_loaderuser_loader 回调从数据库中检索我的用户数据,效果很好。

但是,如果我有几分钟没有主动使用我的应用程序,当我切换到需要登录的页面时,会话数据似乎会消失。我的会话 cookie 保持不变,我的 token_loaderuser_loader 回调似乎从未被调用过。为了找出会话可能发生的情况,我附加了一个 @app.before_request 处理程序来打印会话内容:

[2015-09-29 14:47:21,348] DEBUG in __init__: <SecureCookieSession {u'csrf_token': '51b5b253c55ac954c1bc61dd2dca513e18c4d790', u'_fresh': True, u'user_id': 3, u'_id': 'd3adbd2ed3905986d515aeb04cd1ff7d'}>
[2015-09-29 14:47:21,382] DEBUG in __init__: <SecureCookieSession {u'_flashes': [('message', u'Please log in to access this page.')]}>

似乎所有的用户信息都在那里让我能够加载我的用户,但它已经退出并重新定向到登录页面,并出现 Flask-Login flash 错误。这在它甚至触及我的回调以从数据库加载用户之前就重定向了。

这是否可能只是我的服务器配置的设置问题导致域出现问题?我不太确定我需要查看什么并尝试进一步调试它。

这是 Flask-Login 中的一个已知错误,已在 0.2.10 版左右修复(由我修复)。该错误再次出现在 Flask-Login 的 0.3.0 版中,这是迄今为止最新的版本。我提交了一个新的修复,加上一个单元测试来防止这种情况再次发生。修复已于几天前合并,但尚未发布 0.3.1 版本。

错误报告:https://github.com/maxcountryman/flask-login/issues/231

我的修复请求请求:https://github.com/maxcountryman/flask-login/pull/237