У меня проблема с Flask-Login, когда по какой-то причине кажется, что данные из моего сеанса удаляются. Эта проблема возникает только у меня, когда я запускаю свое приложение на AWS в контейнере Docker. Кажется, нет никаких проблем, когда это запускается локально в контейнере Docker. Кик-контейнер запускает приложение с помощью supervisord для запуска серверов nginx и gunicorn.
Я использую Flask-Login и SQLAlchemy для обработки входа пользователей. Я создаю собственный токен, используя метод get_auth_token()
в моей модели пользователя, который хранит токен с некоторыми данными сеанса в моей базе данных. Я использую обратные вызовы token_loader
и user_loader
для извлечения моих пользовательских данных из базы данных, которая отлично работает.
Однако, если я не использую свое приложение активно в течение нескольких минут, данные сеанса, похоже, исчезают, когда я перехожу на страницу, требующую входа в систему. Мой файл cookie сеанса остается неизменным, и мои обратные вызовы token_loader
или user_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. Это перенаправляется еще до того, как коснется моих обратных вызовов, чтобы загрузить пользователя из базы данных.
Возможно, это просто проблема с настройкой конфигурации моего сервера, которая вызывает проблему с доменами? Я не совсем уверен, что мне нужно посмотреть и попытаться отладить это дальше.