Всплывающее окно защиты аутентификации в 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 ответ
Я решил эту проблему, создав предупреждение о том, что пользователь должен нажать кнопку входа в систему. Таким образом, пользователь инициирует процесс, и всплывающее окно может появиться.