Auth0 accessToken отсутствует при обновлении - PullRequest
0 голосов
/ 21 мая 2019

Логин работает хорошо, но когда я обновляю страницу, он выходит из системы.

Отладка при обновлении

Я добавил в конфигурации Auth0: http://localhost:4200 в Разрешенные веб-источники

export class AppComponent implements OnInit {


  constructor(public auth: AuthService) {
    auth.handleAuthentication();
  }

  ngOnInit() {
    if (this.auth.isAuthenticated()) {
      this.auth.renewTokens();
    }
  }

}

Не отображается сообщение об ошибке. Я поместил console.log в функции обновления токена или выхода из системы, и он не входит.

 public renewTokens(): void {
    console.log("adios3");
    this.auth0.checkSession({}, (err, authResult) => {
      if (authResult && authResult.accessToken && authResult.idToken) {
        this.localLogin(authResult);
      } else if (err) {
        alert(`Could not get a new token (${err.error}: ${err.error_description}).`);
        this.logout();
      }
    });
  }

  public logout(): void {
    // Remove tokens and expiry time
    console.log("adios1");
    this._accessToken = '';
    this._idToken = '';
    this._expiresAt = 0;

    this.auth0.logout({
      returnTo: window.location.origin
    });
  }

  public isAuthenticated(): boolean {
    console.log("adios4");
    // Check whether the current time is past the
    // access token's expiry time
    return this._accessToken && Date.now() < this._expiresAt;
  }

ОБНОВЛЕНИЕ: я пробовал это, но все еще не работает

private localLogin(authResult): void {
    // Set the time that the Access Token will expire at
    const expiresAt = (authResult.expiresIn * 1000) + Date.now();
    this._accessToken = authResult.accessToken;
    this._idToken = authResult.idToken;
    this._expiresAt = expiresAt;
    localStorage.setItem('accessToken',this._accessToken);
localStorage.setItem('expiresAt',String(this._expiresAt));
  }
   public isAuthenticated(): boolean {
    console.log("adios4");
    this._accessToken = localStorage.getItem('accessToken');
    this._expiresAt = Number(localStorage.getItem('expiresAt'));
    return this._accessToken && Date.now() < this._expiresAt;
  }

1 Ответ

0 голосов
/ 21 мая 2019

Где хранится ваш токен доступа. Это в AppComponent или Сервис? Сохраните токен в локальном хранилище, так как при обновлении страницы ваш токен доступа будет установлен на ''. При проверке подлинности считайте ключ токена из локального хранилища.

...