Всплывающее окно защиты аутентификации в angular заблокировано браузером

В проекте Angular я использую метод canActivate в маршрутизации, чтобы ограничить доступ к странице. Я использую функцию popUp из библиотеки @azure/msal-browser для проверки пользователя. При входе на страницу браузер по умолчанию блокирует всплывающее окно. Есть ли способ обойти это? Я не могу использовать редиректы, так как путь уникален.

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

Вот метод активации:

      canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    if (this.authService.isReturningFromLogout) {
      this.authService.isReturningFromLogout = false;
      return false;
    }
    return from(this.authService.init$).pipe(
      switchMap(() => this.authService.user$),
      map(user => {
        const isLoggedIn = !!user;

        if (isLoggedIn) {
          return true;
        } else {
          // Redirect to login page
          this.authService.setRedirectUrl(state.url);
          this.authService.login();
          return false;
        }
      })
    );

1 ответ

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

Другие вопросы по тегам