烧瓶注销特定用户的所有会话

时间:2020-04-30 01:25:38

标签: python session flask session-cookies flask-login

使用Flask-Login注销用户时,是否可以注销该用户可能拥有的所有会话(例如,在不同的浏览器,不同的设备等中)?

2 个答案:

答案 0 :(得分:1)

Flask登录在作为客户端会话的Flask会话中存储user_id,数据存储在用户浏览器中的cookie文件中。因此,您不能在客户端的所有设备和浏览器中删除Cookie。

尽管如此,您可以在帮助下使用服务器端会话,例如用于Flask的Redis和Flask-Session扩展。服务器端会话将解决为任何用户的浏览器或设备同时删除或操纵(想象管理员已授予或删除用户权限)用户会话的问题。

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

答案 1 :(得分:1)

正如Artiom在回答中所说的那样,默认情况下,Flask登录使用客户端的Flask会话,因此您将无法从其他客户端删除所有这些cookie。

但是,有一种方法可以阻止其他客户端登录。Flask-Login依靠user_loader回调函数从缓存中获取用户,该函数在来自用户客户端的每个HTTP请求上被调用。

您可以做的是注销,然后从此缓存中删除该特定用户。这样,当该用户使用的任何客户端(电话,其他浏览器等)尝试访问您的页面时。 Flask-Login在缓存中找不到用户,并将其重定向到登录页面。