使用Auth0授权用户访问某些页面的正确方法

时间:2019-05-26 22:39:17

标签: flask auth0

我正在使用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语句,这看起来正确吗?

1 个答案:

答案 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)实例调用回调。