Angular 7 - Auth0 - нулевой ответ parseHash - PullRequest
1 голос
/ 11 июня 2019

Ошибка Auth0.

Мое приложение повторно вызывает событие входа в систему после выхода из системы при обновлении браузера и имеет проблемы с профилем пользователя.Я отследил его до parseHash в сервисе аутентификации:

  this.auth0.parseHash({ hash: window.location.hash }, (err, authResult) => {
  ...
  }

, который запускается с эффектом ngrx:

  @Effect()
  init$ = defer(() => {
    const userData = localStorage.getItem("user");

    if (userData != null && userData != 'undefined') {
       let authActionObservable = of(new Login({user: JSON.parse(userData)}));
       this.authService.handleAuthentication();
       return authActionObservable;
    }
    this.authService.handleAuthentication();
  });

Кажется, this.auth0.parseHash возвращает null для обоих authResultи ошибка после обновления страницы, но при первоначальном входе в систему authResult заполняется правильно.

Технически вход в систему выполнен успешно, и я получаю токены.Я проверил всю конфигурацию, домен и т. Д., И все выглядит нормально.Я также попытался поиграться с {hash: window.location.hash}.

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Проблема заключалась в том, что состояние переменных в памяти, содержащих токены службы, сбрасывалось при каждом обновлении страницы.Как только я повторно инициализировал значения в конструкторе службы, проблема исчезла.

Вот пример с localStorage для того, что я имею в виду:

  constructor(public router: Router, private store: Store<State>, private http: HttpClient) {
    this._idToken = localStorage.getItem("Auth0IdToken");
    this._accessToken = localStorage.getItem("Auth0AccessToken");
    this._expiresAt = parseInt(localStorage.getItem("Auth0ExpiresAt"));
  }
1 голос
/ 11 июня 2019

Часто я видел, как записывались файлы HAR, чтобы помочь точно определить, что происходит во время рабочего процесса выхода из системы. Не видя, что есть пара вещей, на которые я мог бы предложить взглянуть.

  1. Просмотр документации Выйти
  2. Посмотрите этот документ на , как обрабатывать перенаправления после выхода из системы и оцените, как вы обрабатываете выходы из системы.
  3. Необходимо убедиться, что вы передаете параметр client_id конечной точке выхода из системы, а также задаете URL-адрес разрешенного выхода из системы на уровне клиента.

Теперь я могу ошибаться в основе того, что здесь происходит, но без манера это хорошее фундаментальное место для начала. Спасибо!

...