首页 文章

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

提问于
浏览
2

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

如果用户在浏览器选项中选择了"reopen last tabs on startup",那么会话cookie应该可以解决问题(毕竟它意味着's what they'),但Chrome,Firefox和Safari will persist这些会话cookie .

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

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

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

1 回答

  • 2

    最好的办法是在服务器端处理这个问题,因为正如您所指出的那样,您无法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
    

相关问题