Может лучше сохранять пользовательские данные или авторизационный токен в локалстораж, и проверку делать на его наличие?
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const token = this.authService.getAuthorizationToken();
if (token) {
return true;
}
// not logged in so redirect to sign-in page with the return url
this.router.navigate(['/account/sign-in'], { queryParams: { returnUrl: state.url }});
return false;
}
Можно рассмотреть ситуацию, если пользователь сам заполнит эти поля фейковыми данными в локалстораже и пройдет на закрытую страницу. То ничего страшного не произойдет, т.к. ушедший запрос на получение данных на этой странице получит 401-ю ошибку от бэкенда (токен то фейковый), а значит хендлер-еррор затирает локалстораж и выкидывает юзера на авторизацию. Т.е. этот способ довольно безопасен.