2012-10-28 2 views
3

Role-based access control에 대한 기사를 읽었지만이 사건을 처리 할만큼 명확하지 않습니다. "사용자가 자신의 게시물을 삭제할 수 있습니다"를 구현하는 방법은 무엇입니까?"역할 기반 액세스 제어"모델에서 "사용자가 자신의 게시물을 삭제할 수 있습니다"를 구현하는 방법은 무엇입니까?

정상적인 역할 및 권한의 경우 사용자가 어떤 작업을 수행 할 때 사용자가 가지고있는 역할과 권한이 있는지 확인하고 사용자가 할 수 있는지 판단 할 수 있습니다.

하지만 "사용자가 자신의 게시물을 삭제할 수 있음"에 대한 게시물이 그 사람의 것인지 아닌지 확인해야합니다. 그래서 무언가를 하드 코딩해야합니다. 그러면 제어 시스템이 제어 할 수 없게됩니다.

나는 뭔가를 놓치고 올바르게 어떻게해야합니까?

답변

4

어떤 문제를 해결하려고하는지 완전히 명확하지 않습니다. 누가 액세스 할 수 있는지 정의해야하기 때문에 항상 "하드 코딩"해야합니다. 뭔가가 통제 시스템에서 벗어나지 않는다고 결정한 경우, 실제로 구현에 따라 달라집니다.

당신이 뭘 하려는지, 나는 일반적으로 다음 액세스 등의 정의에 "소유자"역할을 정의 할 경우 : 사용자 여부를 확인

"owner" can "delete" "resource" 

그래서 일부 프로그램 부분이 있어야한다을 참으로 소유자입니다. 일반적으로이 작업은 각 리소스를 예를 들어 "ownerId"속성과 연결하여 수행 할 수 있습니다. userId == ownerId이면 현재 사용자의 역할은 "owner"입니다.

+0

네가 맞다. 나는이 개념들에 대해 더 읽고 생각해야한다. 답변 주셔서 감사합니다 ~ – Freewind

2

"비즈니스 규칙"에 대한 RBAC 계층 지원이 필요합니다. 이러한 기능을 사용할 수 있으면 필요할 때 동적 인 결정을 할 수 있습니다. 기본적으로 biz 규칙은 권한을 확인할 때마다 실행되는 코드 조각입니다. 이 코드는 정적이지만 매개 변수가 전달 될 것으로 기대합니다. 다음은 그 예입니다 (PHP가 표시됨) :

// This code expect two given parameters: $params['owner_id'] and $params['user_id'] 
if ($params['owner_id'] == $params['user_id']) { 
    return true; 
} 
return false; 
// This code assumes that returning true means 'permission granted' and returning 
// false means permission not granted 

귀하는 귀하의 기본 기술에 대해 언급하지 않았습니다. 그러면 더 정확한 답변을 얻을 수 있습니다.

관련 문제