2014-12-28 2 views
0
나는 MEAN.JS의 복수 유저 응용 프로그램을 쓰고 있어요

을에 대한 권한을 관리하기 위해 어떤 행동을 제한해야방법의 RESTful API를

모든 사용자에 대해 사용 권한 배열을 설정하고 모든 API가 필요한 사용자에게 필요한 모든 사용 권한이 있는지 확인해야합니다.

ex.

GET /api/foo/:foo would need "foo-read" 
POST /api/foo would need "foo-create" 
PUT /api/foo/:foo would need "foo-update" 
DELETE /api/foo/:foo would need "foo-delete" 

GET /api/foo/:foo/bar:/bar would need "foo-read" and "bar-read" 
POST /api/foo/bar would need "foo-create" and "bar-create" 
PUT /api/foo/:foo/bar:/bar would need "foo-update" and "bar-update" 
DELETE /api/foo/:foo/bar:/bar would need "foo-delete" and "bar-delete" 

이렇게하면 사용자는 새 사용자를 만들 수 있지만 관리 권한을 부여 할 권한이 없습니다.

이것이 최선의 방법인지 아니면 기존 중동어가 있는지 궁금합니다.

답변

1

인증 프레임 워크를 사용하십시오. cansecurity (전체 공개 : 나는 원저자 임)을 사용합니다. 프로그래밍 방식의 미들웨어와 선언적 형식을 모두 지원합니다.

나는 한 곳에서 깨끗한 내 server.js를 유지, 내 보안 설정의 모든 것을 좋아하기 때문에 나는이에 대한 선언을 사용합니다 :

{ 
    "routes": [ 
     // [verb,path,default,[test params,] test condition] 
     ["GET","/api/foo/:foo","item.roles.foo_read === true"], 
     ["PUT","/api/foo/:foo","item.roles.foo_update === true"] 
    ] 
} 
+0

Cansecurity를 ​​PassportJS와 함께 사용할 수 있습니까? – Edo

+0

나는 그것을 시도하지 않았다. 인증을 위해 여권을 사용하고 승인을 위해 캔크를 사용한다는 뜻입니까? 왜 그렇게되지는 않을지 모르겠지만 결코 시도한 적이 없습니다. 함께 작동하는 방법에 대한 유스 케이스를 정리하면 (요점은?) 통합 가능 여부를 알 수 있습니다. – deitch

1

아마도 미들웨어 필터를 사용하면됩니다.

app.get(function(req,res,next){your code - res.end(data);}); 

var checkpermissions=function(req,res,next){ if bad permission raise error or print access denied page otherwise run next();}; 
app.get(checkpermissions,function(req,res,next){your code - res.end(data);}); 
0

에 나는 액세스 제어는 REST API를 의존해서는 안된다는 확신 해요. REST는 전송 방법으로, 세부 정보가 매우 빠르게 변경 될 수 있으며 이는 단 한 가지 전송 방법이 아닙니다. 나는 배달 방법으로 전통적인 HTML 웹 애플리케이션을 만들 수있다. 권한 부여는 비즈니스 로직 또는 도메인 모델에 의존해야합니다. 따라서 귀하의 경우 승인은 REST API와 비즈니스 로직 사이에 있어야하며 REST 조항이 아닌 비즈니스 용어로 설명되어야합니다. 클라이언트 측에서 처리하는 것은 매우 쉽습니다. 서버가 각 응답과 함께 허용 된 링크 만 되돌려 보내므로 클라이언트 측 코드에서 아무 것도하지 않기 때문입니다. 이제 서버 측에 스파게티 코드가 있으면 문제가 발생합니다 ...

+0

내가 타사에 내 API를 열면 내가 할 수 없습니다 그 (것)들에 나의 사업 논리를 적용하기 위하여 의지하십시오 – Edo

+0

@Edo 나는 당신이 말하고있는 무슨을 이해하지 않는다, 그러나 나는 당신이 나가 쓴 무슨을 이해하지 않는다는 것을 짐작한다. – inf3rno

+0

완벽하게 그럴듯하지만, 내게 도움이되지 않는 한, 나는 그것을 떨어 뜨렸지만, 어쨌든 당신의 노력에 감사한다. – Edo

관련 문제