CanLoad 가드는 게으른로드 모듈의 로딩을 방지 할 수 있습니다. 우리는 일반적으로 권한이없는 사용자가 모듈의 경로를 탐색하고 중지 한 다음 모듈의 소스 코드를 보는 것을 원하지 않을 때이 가드를 사용합니다.
Angular는 권한없는 사용자가 경로에 액세스하는 것을 방지 하는 canActivate Guard를 제공 합니다. 그러나 모듈이 다운로드되는 것을 막지는 않습니다. 사용자는 Chrome 개발자 콘솔을 사용하여 소스 코드를 볼 수 있습니다. CanLoad Guard는 모듈이 다운로드되는 것을 방지합니다.
실제로 CanLoad 는로드 할 모듈을 보호하지만 일단 모듈이로드되면 CanLoad 가드는 아무 작업도 수행하지 않습니다. 인증되지 않은 사용자를 위해 CanLoad 가드를 사용하여 모듈 로딩을 보호했다고 가정 합니다. 사용자가 로그인하면 해당 모듈을로드 할 수 있으며 해당 모듈에 의해 구성된 하위 경로를 탐색 할 수 있습니다. 그러나 사용자가 로그 아웃하면 모듈이 이미로드 되었기 때문에 여전히 사용자는 해당 하위 경로를 탐색 할 수 있습니다. 이 경우 권한이없는 사용자로부터 어린이 경로를 보호하려면 CanActivate guard 도 사용해야합니다 .
AdminModule을로드하기 전에 CanLoad 를 사용하십시오 .
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
AdminModule을로드 한 후 AdminRouting 모듈에서 CanActive를 사용 하여 다음과 같은 권한이없는 사용자로부터 자녀 를 보호 할 수 있습니다 .
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate
위의 시나리오에서 사용 하면 차이점은 무엇입니까?