我想更改默認的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