Flask Выйти из всех сеансов конкретного пользователя c - PullRequest
0 голосов
/ 30 апреля 2020

При выходе пользователя из системы с помощью Flask -Login, есть ли способ выйти из всех сеансов, которые может иметь пользователь (например, в разных браузерах, на разных устройствах и т. Д. c)?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Как сказал Артём в своем ответе, Flask -Login по умолчанию использует сеанс Flask на стороне клиента, и вы не сможете удалить все эти файлы cookie с других клиентов.

Однако , есть способ предотвратить вход других клиентов. Flask -Login использует функцию обратного вызова user_loader для извлечения пользователя из вашего кэша, эта функция вызывается при каждом HTTP-запросе, поступающем от клиента пользователя.

Что вы можете сделать, так это выйти из системы, вы удалите этого конкретного пользователя из этого кэша. Таким образом, когда любой клиент (телефон, другой браузер и т. Д. c ..), используемый этим пользователем, пытается получить доступ к вашей странице. Flask -Login не найдет пользователя в кеше и перенаправит его на страницу входа.

1 голос
/ 30 апреля 2020

Flask -Login сохраняет user_id в сеансе Flask, который является сеансом на стороне клиента, данные хранятся в файле cook ie в браузере пользователя. Таким образом, вы не можете удалить куки на всех устройствах и браузерах клиента.

Тем не менее, вы можете вместо этого использовать сеансы на стороне сервера с помощью, например, Redis и Flask -Session extension для Flask. Сеанс на стороне сервера решит проблему с удалением или манипулированием (представьте, что администратор предоставил или удалил права пользователя) сеанса пользователя одновременно для любого браузера или устройства пользователя.

https://pythonhosted.org/Flask-Session/

...