저는 회사에 대해 각도로 새 엔터프라이즈 응용 프로그램을 만들고 있습니다. 난 각도에 대해 매우 흥분하지만 클라이언트 측의 역할은 나를 위해 밖으로 작동하지 않습니다.Angular Js 보안 문제 역할 기반 인증
기본적으로 사용자 로그가 있고 페이지를보기 전에 토큰을 저장하고 있습니다. 토큰을 기반으로 역할 및 사용자 세부 정보를 얻기 위해 서버에 인증 요청이 전송됩니다.
권한 부여 후 사용자의 역할과 관계없이 전체 데이터를 반환하는 서버에 페이지 데이터를 가져 오도록 요청한 후 권한 부여에 따라 ng-switch와 render 템플릿을 사용합니다.
이제 문제는 클라이언트 측에서 데이터를 표시하고 숨기려고하므로 사용자 정보를받은 후에 클라이언트 측의 범위 변수 또는 로컬 저장소에서 역할을 유지해야한다는 것입니다. 그러나 여기서 중요한 점은 클라이언트 측에서이 역할을 유지하면 역할을 매우 쉽게 변경하고 원하는 데이터에 액세스 할 수 있다는 것입니다.
서버의 역할에 따라 클라이언트 측의 데이터를 표시하려고하는 내 응용 프로그램에 Angular가 맞지 않는다고 가정해야합니다. 왜냐하면 사용자가 자신의 논리와 데이터를 볼 수 있으면 분명히 볼 수 있기 때문입니다. 그것으로 놀아 라.
이
은app.controller('dashoBoardController', ['$scope','UserService', function ($scope, UserService) {
$scope.authentication = UserService.authentication;
$scope.User = UserService.fillAuthData();
console.log($scope.User);
$scope.Greeting = "Welcome! to your Dashboard";
}]);
이이 서비스 방법
var _fillAuthData = function() {
var authData = SessionService.get('user');
if (authData) {
_authentication.isAuth = true;
_authentication.data = authData;
}
console.log(_authentication);
return _authentication;
}
입니다 내가 컨트롤러에서 사용자 변수를 채우는 방법
<div ng-switch="User.data.Role">
<div ng-switch-when="Admin">
<h1>hello you are seeing your dashboard Admin</h1>
</div>
<div ng-switch-when="Manager">
<h1>hello you are seeing your dashboard Manager</h1>
</div>
</div>
여기
가 내보기입니다
세션 서비스가 토큰을 기반으로 서버에서 사용자 데이터를 가져옵니다. 보기에서 볼 수 있듯이 authData에서 역할을 변경하는 것은 그리 중요하지 않습니다.
해결 방법이 있으면 도와주세요. 나는 Angular에서이 프로젝트를 정말로 원했습니다.
일반적으로 서비스는 사용자가 볼 수있는 데이터 만 되돌려 보내야합니다. 즉, 보안은 서비스가 아닌 클라이언트가 처리해야합니다. –