У меня есть приложение Angular с маршрутами, которые реализуют canLoad: [AuthGuard]
, и canLoad в моем классе AuthGuard примерно так:
canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
boolean
{
if (this.authService.isLogged || this.authService.checkLoggedIn())
{
return true;
} else
{
this.router.navigate(['/login']);
return
}
}
Если я пытаюсь получить доступ к любому из моих маршрутов, пока я не вошел в систему, япостоянно получаю ошибки, потому что компоненты маршрута по-прежнему работают NgOnInit()
без какой-либо информации о маршрутизации, поэтому я в конечном итоге выполняю вызовы API без аргументов.Страница, однако, всегда переходит на /login
.
Я не совсем понимаю, как работает AuthGuard, но я установил точки останова на функции canLoad()
, и они никогда не запускаются.Я что-то здесь не так делаю?
Вот корневой маршрут, о котором идет речь:
{
path: '',
component: MydocsComponent,
canLoad: [AuthGuard],
children: [...]
}
РЕДАКТИРОВАТЬ: я понял, что это проблема с моим this.authService.checkLoggedIn()
методом, а именно, что он будет перенаправлять пользователей на /login
дочтобы быть проверенным AuthGuard, так что это проблема с моей стороны.Спасибо за помощь, и я надеюсь, что ответ ниже поможет некоторым людям, использующим canLoad
.