이 특별한 경우에는 사용자 지정 역할 해결자를 만드는 것이 좋습니다. 이 같은
뭔가 :
Role.registerResolver('$inOwners', function (role, ctx, callback) {
ctx.model.count({
id: ctx.modelId,
// This only works for mongo db...
owners: ctx.accessToken.userId
}, function(err, count) {
if (err) {
callback(err);
} else if (count) {
callback();
} else {
callback(new Error('Not Owner'));
}
});
});
그리고 당신이 (어느 모델 정적의 ACL에, JSON 파일에서, 또는 ACL 테이블에 추가) 대한 ACL이를 추가 할 수 있습니다 :
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$inOwners",
"permission": "ALLOW",
"property": "*",
"model": "*"
}
루프백 방법에 대한 액세스가 문서/행 내부의 내용에 따라 달라질 때마다 역할 해결 자만을 사용하여 ACL을 정의 할 수 있습니다. 그렇지 않으면 고유 한 ACL 시스템을 만들어야합니다.
감사합니다. :). ACL 테이블이 기본적으로 모델 json 파일에 지정된 것의 "단지"지속성이므로이 점을 이해하고 있습니까? 이 예제에서는 개체 소유자가 포함될 모델의 필드를 사용합니다. 더 많은 제어가 필요한 경우 (예 : 소유자, 편집자, 개별 인스턴스의 시청자가 있으면이 인스턴스는 새로운 "instance_acl"테이블에 포함될 것입니까? –
예. 동적 테이블에 ACL 테이블을 사용하면 (예를 들어, 관리자가 다른 사용자의 권한을 관리 할 수 있습니다.) 모델 json 파일에있는 테이블은 정적 요소 일뿐입니다. 더 많은 제어를 위해보다 구체적인 acl 항목을 만들거나 역할 분석기에 더 많은 논리를 추가 할 수 있습니다. –