Сеансы входа в Flask не работают

У меня проблема с 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. Это перенаправляется еще до того, как коснется моих обратных вызовов, чтобы загрузить пользователя из базы данных.

Возможно, это просто проблема с настройкой конфигурации моего сервера, которая вызывает проблему с доменами? Я не совсем уверен, что мне нужно посмотреть и попытаться отладить это дальше.


person Stuart Robertson    schedule 29.09.2015    source источник


Ответы (1)


Это известная ошибка в Flask-Login, которая была исправлена ​​в версии 0.2.10 (мной). Ошибка снова появилась в версии 0.3.0 Flask-Login, которая на сегодняшний день является самой последней версией. Я представил новое исправление, а также модульный тест, чтобы это больше никогда не повторилось. Исправление было объединено несколько дней назад, но версия 0.3.1 еще не выпущена.

Отчет об ошибке: https://github.com/maxcountryman/flask-login/issues/231< /а>

Мой запрос на включение с исправлением: https://github.com/maxcountryman/flask-login/pull/237

person Miguel    schedule 29.09.2015
comment
Привет @Miguel, похоже, это проблема, но на самом деле я использовал версию 0.2.11 Flask-Login. Я просто устанавливаю защиту на «базовую», так как в данный момент она работает. Я подожду нового выпуска на Pypi и попробую еще раз, используя «сильный», чтобы увидеть, решило ли ваше исправление проблему для меня. Спасибо. - person Stuart Robertson; 30.09.2015