Я приложение Angular2, который должен блокировать маршрут к определенной странице, если пользователь не вошел в систему Это мой app.routes файлAngular2: Маршрут перенаправления с AuthGuard
export const routes: Routes = [
{ path: '', component: LoginComponent },
{ path: 'login', component: LoginComponent },
{ path: 'home', component: HomeComponent, canActivate: [AuthGuard] },
{ path: '**', component: LoginComponent },
];
и мой файл AuthGuard
.@Injectable()
export class AuthGuard implements CanActivate {
response: ResponseInterface;
constructor(private router: Router, private localStorage: LocalStorageService,
private services: MyService) { }
canActivate() {
let token = String(this.localStorage.get('token'));
if (token != null) {
this.services.keepAlive(token).subscribe(
response => this.response = response,
error => alert(error),
() => {
if (this.response.status == 'OK') {
console.log("response OK");
return true;
} else {
console.log("response KO");
this.router.navigate(['/login']);
return false;
}
}
)
} else {
this.router.navigate(['/login']);
return false;
}
теперь, если я стараюсь, чтобы перейти к http://localhost:4200/#/home пути и у меня уже есть маркер, хранящийся в LocalStorage, ничего не произойдет: домашняя страница не предъявляются и путь на панели навигации становится http://localhost:4200/#/. Что случилось?
Итак, вы видите «ответ OK» в журнале? – echonax
Да, ответ в порядке – giozh
Нет, я имею в виду, что у вас есть 'console.log (« response OK »);' в вашем коде. Вы видите это в журнале консоли? – echonax