我正在建立一个烧瓶应用程序,我有一个名为createUser的终点。现在我只想要管理员(用户类型=管理员)来创建其他用户而不是常规用户。使用@ login-required装饰器不会阻止普通用户调用此终点。
可以限制的一个简单方法是在createUser函数中检查用户的类型,并且仅当用户是admin时才允许。
但总的来说,保护烧瓶终点的最佳方法是什么,只有少数用户可以访问终点?
答案 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