Как вы знаете, угловое приложение - это SPA, а навигация по страницам - только о мягких маршрутах.Чтобы предотвратить несанкционированный доступ к любой странице вашего приложения, вы должны предоставить защиту маршрута (реализация CanActivate) для всех ваших определений маршрута.Я делюсь примером кода ниже.AccessValidator реализует интерфейс CanActivate и определяет необходимую логику для перенаправления попыток несанкционированного доступа на экран входа в систему.
export class AccessValidatorService implements CanActivate {
constructor(public router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
let result = true;
if (this.shouldNavigateToLogin()) { // this check is up to you
this.router.navigateByUrl('/' + LoginScreenComponent.ROUTE_PATH);
result = false;
}
return of(result);
}
// ...
}
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'example_screen',
component: ExampleScreenComponent,
canActivate: [AccessValidatorService]
}
])
],
providers: [AccessValidatorService]
})
Для дальнейших и подробных объяснений: https://angular.io/api/router/CanActivate
Если вы хотите проверитьсрок действия сеанса также перед каждым http-запросом (вызовы служб и т. д.); способ, которым вы должны это делать, - реализация HttpInterceptorВы можете выполнить это пошаговое руководство, объясняющее, как реализовать HttpInterceptor.