保护烧瓶终点的最佳方法是什么?

Ara*_*ind 1 python flask

我正在构建一个烧瓶应用程序,其中有一个名为createUser的端点。现在,我只希望管理员(用户类型= admin)创建其他用户,而不是普通用户。使用@login必需的装饰器不会阻止普通用户调用此端点。

可以限制的一种简单方法是在createUser函数中检查用户的类型,并且仅在用户为admin时才允许。

但是总的来说,最好的方法是保护烧瓶的端点并仅使很少的用户访问端点?

cor*_*vid 5

一般来说,人们通常会设置一个装饰器来获取current_user并检查其角色。

def role_required(role_name):
    def decorator(func):
        @wraps(func)
        def authorize(*args, **kwargs):
            if not current_user.has_role(role_name):
                abort(401) # not authorized
            return func(*args, **kwargs)
        return authorize
    return decorator
Run Code Online (Sandbox Code Playgroud)

然后在您看来,您可以执行以下操作:

@app.route('/protected')
@role_required('admin')
def admin_view():
    " this view is for admins only "
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用烧瓶摇床