【问题标题】:Flask Logout All Sessions of a Specific User烧瓶注销特定用户的所有会话
【发布时间】:2020-08-14 06:50:53
【问题描述】:

当使用 Flask-Login 注销用户时,有没有办法注销用户可能拥有的所有会话(例如:在不同的浏览器、不同的设备等)?

【问题讨论】:

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


    【解决方案1】:

    正如 Artiom 在他的回答中所说,Flask-Login 默认使用客户端的 Flask 会话,您将无法从其他客户端删除所有这些 cookie。

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

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

    【讨论】:

      【解决方案2】:

      Flask-Login 将 user_id 存储在 Flask 会话中,这是客户端会话,数据存储在用户浏览器的 cookie 文件中。在此您无法删除客户端所有设备和浏览器中的 cookie。

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-03
        • 2017-11-13
        • 1970-01-01
        • 2019-07-09
        • 2016-02-17
        • 2020-09-05
        • 2017-04-15
        • 1970-01-01
        相关资源
        最近更新 更多