我想更改默认的Flask-Login @login_required
,以便它将检查数据库是否禁止用户。修改Flask-Login @Login_Required修饰器
我知道我可以创建一个自定义的装饰器来检查我的数据库并将其添加到我的所有视图中,但是由于我拥有的视图的数量,这将不太有用。这将不方便。
这可能吗?谢谢。
我想更改默认的Flask-Login @login_required
,以便它将检查数据库是否禁止用户。修改Flask-Login @Login_Required修饰器
我知道我可以创建一个自定义的装饰器来检查我的数据库并将其添加到我的所有视图中,但是由于我拥有的视图的数量,这将不太有用。这将不方便。
这可能吗?谢谢。
您可以使用下一个方法:
from flask.ext.login import LoginManager
@login_manager.user_loader
def load_user_if_not_banned(user_id):
user = ... # Load user from DB
return user if not user.is_banned else None
您可以实现自己的login_required
装饰这是相当简单的实际。这篇文章https://medium.com/@nguyenkims/python-decorator-and-flask-3954dd186cda给出了一些关于如何实现这个装饰器的伪代码。
也许'is_authenticated'返回属性'is_banned'而不是'True' ?.使用'@ property' decorater来执行逻辑 – Busturdust
您的[用户类](https://flask-login.readthedocs.org/en/latest/#your-user-class)具有'is_authenticated'和'is_active'属性。如果用户被禁止,请使用“返回False”。 – Celeo