AngularFire2 Guard не перенаправляет после первого входа в систему нет претензий - PullRequest
0 голосов
/ 25 сентября 2019

Я использую AngularFire2 для защиты моих маршрутов с пользовательскими утверждениями, как описано в этой ссылке .

. Это работает, как ожидается, чтобы разрешить / заблокировать пользователей с моими пользовательскими утверждениями.Но я заметил, что есть проблема, когда пользователь без претензий пытается войти в систему, и после этого в том же окне пользователь с претензиями пытается войти.Происходит следующее:

  1. Пользователь пытается войти с "фиктивным" пользователем, у которого нет претензий.
  2. Пользователь аутентифицирован, но он перенаправляется для входа в систему, поскольку онпретензии не принимаются
  3. Пользователь пытается войти в систему с помощью пользователя IHaveClaims, он аутентифицирован, но не перенаправлен на следующую страницу.

Мой код:

const isAccess = () =>
  pipe(
    customClaims,
    map(claims => {
      return claims.access === true ? claims.access : ['/auth'];
    })
  );

const routes: Routes = [
  /** this is the login page */
  {
    path: 'auth',
    loadChildren: () =>
      import('@project/section/auth').then(module => module.SectionAuthModule)
  },
  {
    path: 'home',
    loadChildren: () =>
      import('@project/section/home').then(module => module.SectionHomeModule),
    canActivate: [AngularFireAuthGuard],
    data: { authGuardPipe: isAccess }
  },

Я заметил, что после успешного входа в систему с моим фиктивным пользователем моя функция isAccess больше не вызывается, пока я не обновлю страницу (F5).Если я попытаюсь перейти к защищенному после входа в систему с моим пользователем IHaveClaims, охранник теперь будет распознавать пользователя как претензии и будет загружать ресурс, как и ожидалось, но это будет работать, только если я наберу маршрут в браузере (добавьте/ home после localhost).

Здесь я ищу следующее:

  1. Пользователь пытается войти с "фиктивным" пользователем, у которого нет претензий
  2. Пользователь остается на странице входа в систему (я добавлю обработку претензий позже)
  3. Пользователь пытается войти в систему с пользователем 'IHaveClaim', у которого есть претензии
  4. Пользователь перенаправлен на главную страницу

Кто-нибудь знает, что мне не хватает в моем коде?

...