Angularfire2 Обновить токен после истечения срока действия - PullRequest
0 голосов
/ 27 апреля 2018

Я использую angularfire2 для аутентификации. когда истекает токен, мне нужно получить новый действительный токен. текущий код

private user: Observable<any>;
constructor(pprivate _firebaseAuth: AngularFireAuth) {
    this.user = _firebaseAuth.authState;
}

refreshToken() {
  this.user.switchMap(
      (user) => {
          user.getIdToken(true).then((tk) => {
              localStorage.setItem('id_token', tk);;
          });
      }
  );
}

Это правильный способ обновления токена?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Я не уверен, что основная идея в том, что вы использовали другой токен для манипулирования своей аутентификацией. Я понимаю, что AngularFireAuth имеет свой собственный способ управления токенами и другими частями. Дело в том, что вы объявили переменную user как Observable, поэтому каждый раз, когда вы ее используете, она предполагает встраивание с помощью async. Я могу привести пример, который также работает в моем приложении:

<ul>
    <li class="nav-item" *ngIf="user | async">
        <a class="nav-link" (click)="onLogout()"> Logout </a>
    </li>
    <ng-container *ngIf="!(user | async)">
        <li class="nav-item">
           <a routerLink="/" class="nav-link">Home</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" routerLink="/auth/login"> Login </a>
        </li>
        <li class="nav-item">
            <a class="nav-link" routerLink="/auth/register"> Register </a>
        </li>
    </ng-container>
</ul>
0 голосов
/ 02 мая 2018

getIdToken обновит токен идентификатора по истечении срока действия или вернет кешированный токен идентификатора, если срок его действия не истек. В идеале этого должно быть достаточно. У вас будет механизм для получения действительного токена в любое время, когда он вам понадобится.

Если вам необходимо предварительно обновить токен до истечения срока действия, вы можете сделать что-то, как вы предложили, но вам нужно следить за истечением срока действия идентификатора токена. Совершенно неэффективно делать это при каждом вызове. Срок действия идентификационного токена составляет 1 час. Вы можете принудительно обновить пару минут до истечения срока действия. Один из способов получить время истечения - анализ поля exp из полезной нагрузки токена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...