Я новичок в Angular Auth Guard.Я успешно интегрировал аутентификацию, так что вошедшие в систему пользователи могут получить доступ к приватным страницам.Для этого я использовал CanActivate
.Теперь я собираюсь использовать другой тип защиты, которая не позволяет зарегистрированным пользователям получать доступ к некоторым частным страницам.Из https://www.concretepage.com/angular-2/angular-2-4-route-guards-canactivate-and-canactivatechild-example, я узнал, что могу использовать canActivateChild
для достижения аналогичного результата.
В app-routing.module.ts
файле я использовал ниже:
const routes: Routes = [ ...
{ path: 'myaccount', loadChildren: '../module/myaccount/myaccount.module#MyAccountModule',canActivate: [AuthGuard] },...];
Подmyaccount
, у меня есть несколько других дочерних компонентов.
В myaccount-routing.module.ts
я написал следующее:
const routes: Routes = [
...
{ path: 'abc', component: AbcComponent,
children: [
{ path: 'xyz', component: XyzComponent, canActivateChild: [ AuthGuard ] },
... ]
}
];
В компоненте abc
в myaccount
я написалследующие в abc-routing.module.ts
:
const routes: Routes = [
...
{ path: 'xyz', component: XyzComponent, canActivateChild: [ AuthGuard ]},
...
];
Это мой auth.guard.ts
:
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild} from '@angular/router';
import { CommonService } from './../services/common.service';
@Injectable()
export class AuthGuard implements CanActivate {
private userData:any={};
constructor(
private router: Router,
private commService : CommonService
) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
...
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
console.log("fired!);
return true;
}
}
Когда я перехожу на страницу xyz из браузера, скажите myaccount/abc/xyz
, он должен запуститьКонсоль браузера, однако, я не вижу текст в консоли браузера.В CLI тоже нет ошибок.Я обновил страницу xyz
, но не повезло.Нет текста в консоли браузера.Есть идеи?