Flask 如何将所有端点标记为@login\u required

Flask 如何将所有端点标记为@login\u required,flask,flask-login,Flask,Flask Login,我正在为我的应用程序使用flask登录插件,它已经开发到了一个很好的程度 我想将所有url端点标记为“@login\u required” 我有没有办法用一行代码在一个地方完成这项工作 而不是用@login\u required标记每个视图函数。您可以定义自己的装饰器。提供一个完全满足您需要的 from functools import wraps from flask_security import login_required def route(bp, *args, **kwargs)

我正在为我的应用程序使用flask登录插件,它已经开发到了一个很好的程度

我想将所有url端点标记为“@login\u required”

我有没有办法用一行代码在一个地方完成这项工作
而不是用@login\u required标记每个视图函数。

您可以定义自己的装饰器。提供一个完全满足您需要的

from functools import wraps

from flask_security import login_required

def route(bp, *args, **kwargs):
    def decorator(f):
        @bp.route(*args, **kwargs)
        @login_required
        @wraps(f)
        def wrapper(*args, **kwargs):
            return f(*args, **kwargs)
        return f

    return decorator
您可以将路由添加到蓝图使用的任何端点,而不是直接使用蓝图的
路由
装饰器

bp = Blueprint('name', __name__)

@route(bp, '/')
def route1():
    return 'Hello, world!'

由于我广泛使用蓝图,因此可以在BP级别执行一些操作,一些api类似于添加url规则