【问题标题】:Flask: Clear session from admin prospectiveFlask:清除来自管理员的会话
【发布时间】:2018-10-13 15:25:06
【问题描述】:

在我的烧瓶应用中,注销可以清除会话。

@app.route('/logout')
def logout():
    session.clear()
    return redirect(url_for('index'))

但只有当用户在我的网站上单击注销时才会调用注销。

我正在实现一个可以阻止神秘用户的功能。所以,我需要在未经他同意的情况下强制注销用户。如果我可以清除他的会话,我的逻辑也会起作用。请指导。

注意:有人建议更改 app.secret_key。但这会清除所有用户的会话,而不仅仅是特定用户。

【问题讨论】:

    标签: flask flask-session


    【解决方案1】:

    所以你必须在每次请求之前检查用户是否被禁止!

    @app.before_request
    def before_request():
        user = findUser()
        if user.isBanned():
            return redirect(url_for('logout'))
    

    这样的事情会起作用,

    你必须植入findUserisBanned,findUser应该返回一个User对象,isBanned应该返回TrueFalse

    【讨论】:

    • isBanned 将从数据库中获取。被阻止的用户可能是千分之一。但是在这种方法中,我必须在每次操作中为所有用户进行数据库请求调用。我正在寻找一种方法,以便我可以清除特定用户的会话,而无需为每个用户进行太多额外的调用。
    • 是的,这是唯一没有硬编码的方法,你可以使用键对值数据库,比如redis,然后在里面检查哪个用户应该被踢出而不是查询主数据库跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多