2013-09-04 3 views
3

사용자 역할을 사용하여 일반적인 웹 사이트 MVC 권한 시스템을 만드는 방법에 대한 자습서를 찾으려고 잠시 동안 찾으려고했습니다.mongodb/nosql에서 사용자 역할 및 권한을 생성하는 방법

필자는 SQL 및 관계를 사용하여 이러한 일을 수행하지만, NoSQL에 데이터베이스에 그 (난 가정)을 다르게. 내가 마음에 무엇을

이런 일이

//Role objects 
{Roles : [ 
{ 
    '_id' : 'uniqueId', 
    'role_name' : 'admin', 
    'permissions_granted' : [array of permission strings] 
}, 
{ 
    '_id' : 'uniqueId', 
    'role_name' : 'user', 
    'permissions_granted' : [array of permission strings] 
}, 
{ 
    '_id' : 'uniqueId', 
    'role_name' : 'guest', 
    'permissions_granted' : [array of permission strings] 
} 
]} 

//User objects 
{Users: [ 
{ 
    '_id' : 'uniqueId', 
    'username' : 'mike', 
    'password' : 'mypass', 
    'permissions' : [an instance of role group, or its id ? ] 
}, 
{ 
    '_id' : 'uniqueId', 
    'username' : 'jonny', 
    'password' : '123', 
    'permissions' : [???] 
} 
]} 

가 어떻게 사용자 데이터 +의 권한을 가져옵니다 단일 쿼리를 만들 수있다? 에는 2 개의 쿼리를 사용하는 단점이 있는데 하나는 사용자의 역할 ID를 얻은 다음 역할 문서에서 권한을 얻습니다. ? 에서는 MongoDB를

+0

알림 : mongodb는 문서 및 하위 문서 지향이며, 'JOIN'과 같은 것은 없으며 디자인 상으로는 존재하지 않습니다. 각 사용자의 권한 배열, 즉 "역할 그룹의 인스턴스"에 역할 객체를 포함합니다. – zamnuts

답변

0

당신과 같은 ID가 아닌 객체를 사용한다처럼되는 NoSQL 데이터베이스에 처리하는 사용자의 권한입니다. 이렇게하면 모든 것을 쉽게 업데이트 할 수 있습니다. 시나리오가있는 경우 사용 권한을 자주 읽고 매우 드물게 작성하는 경우 (역할에 따라 역할 ID에 추가로 저장할 수 있음)

그러나 업데이트해야합니다 이러한 권한은 역할이 업데이트 될 때마다 발생합니다. 그러나 사용자에게 질의를하면 두 개의 별도 쿼리를 사용하는 것보다 훨씬 빨리 수행 할 수 있습니다.

관련 문제