내 프로젝트에서 angular2 및 laravel 5.3을 사용했습니다. laravel에서 사용자가 서버에 로그인 할 때 인증 권한을 처리 할 사용자 권한을 보냅니다. 그래서 나는 액세스 할 수없는 사용자로부터 경로를 보호하기 위해 경비원을 썼다. 각도 2 역할 및 권한
export class AccessGuard implements CanActivate{
permissions;
currentRoute;
constructor(private authService:AuthService,private router:Router){
this.permissions = this.authService.getPermissions();
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
private checkHavePermission(url){
switch (true) {
case url.match(/^\/panel\/users[\/.*]?/):
return this.getPermission('user.view');
case url.match(/^\/panel\/dashboard/):
return true;
case url.match(/^\/panel\/permissions/):
return this.getPermission('permissions.manager');
case url.match(/^\/panel\/candidates[\/.*]?/):
return this.getPermission('candidate.view');
}
}
getPermission(perm){
for(var i=0;i<this.permissions.length;i++){
if(this.permissions[i].name == perm){
return true;
}
}
return false;
}
}
지금 경로가 고정되어 있는지 내가 어떻게 구성 요소 클래스 내부의 사용자 권한에 액세스 할 수 있는지 궁금 : 여기 내 가드 클래스 코드입니다. 때로는 사용자가 경로에 액세스 할 수 있지만 dom의 특정 부분을 볼 수 없기 때문입니다. 이런 상황을 어떻게 처리 할 수 있습니까?
답변 해 주셔서 감사합니다. 하지만 사용자가 페이지를 새로 고침 할 때 그 내용은 무엇입니까? 로컬 저장소에서 사용 권한을 저장한다고 생각했지만 안전하지는 않습니다. 너는 무엇을 제안 하는가? –
로컬 저장소/세션 저장소가 사용자의 선택 일뿐 아니라 사용자 이름/암호 조합이 아닌 필요한 항목 만 저장할 수 있습니다. JWT와 같은 일을 할 수있는 방법이있을 것이라고 확신하지만, 아직 경험이 없습니다. –
JWT는 클라이언트에 인증을 안전하게 저장하는 트렌드 방법입니다. – Pierre