我正在使用Auth0创建用户授权,我还将用户分配给了组,然后将其分配给了组内的角色。限制用户访问某些页面和路线的正确约定是什么?
当前我正在执行以下操作:
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
if 'profile' not in session:
# Redirect to Login page here
return redirect('/')
return f(*args, **kwargs)
return decorated
@app.route('/dashboard')
@requires_auth
def dashboard():
if not authorization_check(['GroupNameExample']):
return redirect(url_for('logout')) # instead of an error page for now
else:
return render_template('dashboard.html')
def authorization_check(groups):
user_group = session['profile']['security']['groups'][0]
if user_group not in groups:
return False
else:
return True
所以我只是在做一个基本的IF语句,这看起来正确吗?
答案 0 :(得分:1)
这可以通过角色和直接用户ID主动完成。以下是利用ID令牌解决访问被拒绝错误的示例:
function (user, context, callback) {
if (context.clientID === "BANNED_CLIENT_ID") {
return callback(new UnauthorizedError('Access to this application has been temporarily revoked'));
}
callback(null, user, context);
}
这将导致使用包含您设置的消息的错误querystring参数重定向到您的回调URL。 (例如https://yourapp.com/callback?error=unauthorized&error_description=Access%20to%20this%20application%20has%20been%20temporarily%20revoked)。确保使用UnauthorizedError(不是Error)实例调用回调。