Если пользователь входит в систему, он автоматически перенаправляется на route: ''
, и токен сохраняется в localStorage.
Однако, если вошедший в систему пользователь вручную вводит URL-адрес route: /login
, он долженмаршрутизируется в route: ''
, и это то, чего я хочу достичь.
Что я сделал, так это добавил проверку в моем OnInit()
внутри моего LoginComponent
, и это работает.Но как я могу добиться этого в моей AuthGuard?Я подумываю получить запрошенный маршрут, если route: /login
, и перейти к route: ''
, если уже вошел в систему.
Маршрут:
{ path: '', component: PostListComponent },
{ path: 'create', component: PostCreateComponent, canActivate: [AuthGuard] },
{ path: 'edit/:postId', component: PostCreateComponent, canActivate: [AuthGuard] },
{ path: 'login', component: LoginComponent }
AuthGuard:
const currentRoute = route.url[0].path;
const isAuth = this.authService.getIsAuth();
if (!isAuth) {
this.router.navigate(['/login']);
}
if (currentRoute === '/login') {
this.router.navigate(['/']);
}
console.log(currentRoute);
return isAuth;
LoginComponent:
ngOnInit() {
const isAuth = this.authService.getIsAuth();
if (isAuth) {
this.router.navigate(['/']);
}
}
ОБНОВЛЕНИЕ: я обновил свой AuthGuard для проверки текущего маршрута, но он не получает маршрут, если он введен вручную в адресную строку.