0
저는 Angular 2에 익숙하지 않고 아래에 언급 된대로 다음 코드를 사용하여 기반 인증을 구현하려고합니다. 특정 사용자가 해당 역할에 액세스 할 수 있는지 확인할 수 있습니까? 여기 잘못있는거야? 각도 2로 canActivate 구현
이
const appRoutes: Routes = [
{ path: '', component: LoginComponent },
{ path: 'main', component: MainComponent }
];
const appChildRoutes: Routes = [
{
path: 'main', component: MainComponent,
canActivateChild: [RoleGuard],
children: [
{
path: 'charts', component: ChartsComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] }
},
{ path: 'overview', component: OverviewComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] } },
{ path: 'demand', component: DemandComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] } },
{ path: 'analysis', component: AnalysisComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] } },
{ path: 'approval', component: ApprovalComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] } },
{ path: 'demand/:demand', component: DemandComponent, canActivateChild: [RoleGuard],
data: { roles: ['user', 'admin'] } }
]
}
]
roleguard.ts
export class RoleGuard implements CanActivate,CanActivateChild{
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
console.log("*******************Can Activate Called*************************");
let roles = route.data["roles"] as Array<string>;
console.log("state"+state);
return (roles == null || roles.indexOf("the-logged-user-role") != -1);
}
canActivateChild(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
console.log("********************Can Activate Child Called**********************");
let roles = route.data["roles"] as Array<string>;
console.log("state"+state);
return (roles == null || roles.indexOf("the-logged-user-role") != -1);
}
}
'roles.indexOf()'를 검사하는 코드가 실행될 때'roles'이 여전히'null' 인 것 같습니다. 관측 대상에 가입해야 할 수도 있습니다. 'role'을로드하는 코드를 보지 않고서는 구체적인 정보를 제공하기가 어렵습니다. –