Что вы можете сделать, это добавить охрану маршрута.
Вы просто добавите свойство canActivate
на маршруты, которые хотите охранять.
Посмотрите на этот пример службы:
// src/app/auth/auth-guard.service.ts
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from './auth.service';
@Injectable()
export class AuthGuardService implements CanActivate {
constructor(public auth: AuthService, public router: Router) {}
canActivate(): boolean {
if (!this.auth.isAuthenticated()) {
this.router.navigate(['login']);
return false;
}
return true;
}
}
Служба внедряет AuthService
и Router
и имеет единственный метод с именем canActivate
.Этот метод необходим для правильной реализации интерфейса CanActivate
.
Метод canActivate
возвращает логическое значение, указывающее, должна ли быть разрешена навигация к маршруту.Если пользователь не аутентифицирован, он перенаправляется в другое место, в этом случае маршрут называется /login
.
И в файле, где у вас есть ваши маршруты:
export const ROUTES: Routes = [
{ path: '', component: HomeComponent },
{
path: 'profile',
component: ProfileComponent,
canActivate: [AuthGuard]
}
];
Как видите, страница профиля имеет свойство canActivate
.Вы просто добавите его в маршруты, которые хотите защитить.
Полная реализация здесь https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3