Правильный метод авторизации пользователей на определенных страницах с использованием Auth0 - PullRequest
0 голосов
/ 27 мая 2019

Я использую 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 Ответ

1 голос
/ 31 мая 2019

Это можно сделать активно с помощью ролей и прямых идентификаторов пользователей.Ниже приведен пример использования идентификатора токена для ошибки «Отказано в доступе»:

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);
}

Это приведет к перенаправлению на ваш URL-адрес обратного вызова с параметром строки запроса об ошибке, содержащим заданное вами сообщение.(например, https://yourapp.com/callback?error=unauthorized&error_description=Access%20to%20this%20application%20has%20been%20temporarily%20revoked). Обязательно вызовите обратный вызов с экземпляром UnauthorizedError (не Error).

...