суть такова. Делаю Авторизацию. Разобрался как сделать AuthGuard на проверку token.... Все хорошо работает. Но теперь же мне нужно закрыть доступ к странице login... так как я уже авторизован и есть токен.... Пример ниже:
export class AuthService {
constructor(public jwtHelper: JwtHelperService ) {}
public isAuthenticated(): boolean {
// true или false - не стал приводить весь код чтоб не путать, вы поймете
return true;
}
}
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;
}
}
const routes: Routes = [
{
path: '',
component: AuthComponent,
children: [ {path: 'login', component: LoginComponent} ]
},
{
path: '',
component: contentComponent,
canActivate: [AuthGuard],
children: [ {path: 'map', component: MapComponent} ]
},
];
Вообщем проблема случилась такова.... Когда в условия canActivate добавляю условие обратое чтоб если заходишь на /login и есть токен - редиректило на /map но у меня почемуто заходит в цикл и браузер зависает.... Пример кода что я изменил - ниже
// добавил AuthGuard к login
const routes: Routes = [
{
path: '',
component: AuthComponent,
canActivate: [AuthGuard],
children: [ {path: 'login', component: LoginComponent} ]
},
{
path: '',
component: contentComponent,
canActivate: [AuthGuard],
children: [ {path: 'map', component: MapComponent} ]
},
];
//добавил в Guard условие else if
export class AuthGuardService implements CanActivate {
constructor(public auth: AuthService, public router: Router) {}
canActivate(): boolean {
if (!this.auth.isAuthenticated()) {
this.router.navigate(['/login']);
return false;
} else if (this.auth.isAuthenticated()){
this.router.navigate(['/map']);
return false;
}
return true;
}
}