在Flask和Flask-Login中删除会话cookie

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Flask和Flask-Login中删除会话cookie相关的知识,希望对你有一定的参考价值。

我们要求客户要求用户必须对每个会话进行身份验证。

如果用户在浏览器选项中选择“重新打开启动时的最后一个标签”,那么会话cookie应该可以解决问题(毕竟这是他们的意思),但Chrome,Firefox和Safari will persist这些会话cookie。

我们的客户不喜欢这样,我们希望我们能够快速过期,比如30分钟(该网站不适合长期使用)。

我可以通过Flask-Login设置“记住”cookie,但问题是即使我这样做,Flask-Login仍然设置会话cookie,这意味着即使在永久cookie过期后,会话也会保留并且用户仍然经过身份验证。

我怎样才能完全禁用会话cookie?

答案

最好的办法是在服务器端处理这个问题,因为正如您所指出的那样,您无法100%控制客户端的cookie行为。

基本上你想要改变你的user_loader回调函数来检查用户的活动(无论是上次看到它们还是上次登录时)。

例如:

@lm.user_loader
def load_user(id):

    user = User.query.get(id)

    if not user:
        return None

    minutes = 30

    if user.last_seen < (datetime.utcnow() - timedelta(minutes=minutes)):
        # Session has timed out
        return None

    return user

以上是关于在Flask和Flask-Login中删除会话cookie的主要内容,如果未能解决你的问题,请参考以下文章

[Python][flask][flask-login]关于flask-login中各种API使用实例

Flask-HttpAuth 和 Flask-Login

检查用户是不是在模板中使用 Flask-Login 登录

Flask-Login用户登陆

我们能否在Python Flask中跟踪当前活动的会话

Flask-login 插件使用