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

时间:2014-08-10 21:30:37

标签: python flask

我正在建立一个烧瓶应用程序,我有一个名为createUser的终点。现在我只想要管理员(用户类型=管理员)来创建其他用户而不是常规用户。使用@ login-required装饰器不会阻止普通用户调用此终点。

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

但总的来说,保护烧瓶终点的最佳方法是什么,只有少数用户可以访问终点?

1 个答案:

答案 0 :(得分:4)

一般来说,人们通常会设置一个装扮者来获取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

然后在您的观点中,您基本上可以这样做:

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

或者,您可以使用flask-bouncer