Я охранник маршрутизатора, поэтому, если пользователь вошел в систему, он не должен позволять пользователям go на /login
. Но я могу go /login
, даже если я вошел в систему.
Это authGuard
export class AuthGuard implements CanActivate {
constructor(private apiService: ApiService,
private router: Router) {
}
canActivate(
route: ActivatedRouteSnapshot,
router: RouterStateSnapshot):
| boolean
| UrlTree
| Promise<boolean | UrlTree>
| Observable<boolean | UrlTree> {
return this.apiService.session.pipe(
take(1),
map(session => {
const isAuth = !!session;
if (isAuth) {
return true;
}
return this.router.createUrlTree(['/login']);
})
);
}
}
Модуль маршрутизации
const routes: Routes = [
{
path: 'login',
component: LoginComponent,
},
{
path: 'dashboard',
canActivate: [AuthGuard],
component: DashboardComponent
}
];