배경 : MVC2를 완전히 새로 도입했습니다. C# 경험이 있지만 제한된 웹 경험이 있습니다.세분화 된 권한 부여 및 MVC2에 대한 질문
단순히 역할을 사용자에게 할당하는 것보다 세분화 된 액세스가 필요합니다. 사용자는 트리의 0 점 이상에서 역할을 수행 할 수 있습니다.
/
/Europe
/England
/France
/USA
예를 들어, 사용자는 "유럽"아래의 모든 포럼의 사회자 일 수 있으며 프랑스의 뉴스 게시자가 될 수 있습니다.
두 예 컨트롤러는 다음과 같은 작업이 있습니다
ForumController :
public ActionResult DeletePost(int id) { ... }
NewsController가 :
[HttpPost]
public ActionResult Post(int treeID, ...) { ... }
어떻게이 문제를 접근해야합니까? 내가 수집 한 것에서 Membership + RoleProvider는이 수준의 세분화 된 제어를 수행 할 수 없습니다. 이전에이 모든 것을 지원하는 사용자 지정 사용자/역할/인증 시스템을 작성했지만 LoginView와 같은 "표준"컨트롤과 호환되지 않았습니다.
NewsAdmin
뉴스
편집 뉴스
삭제 뉴스
목표는 그래서 같은 액세스를 허용하는 역할을하는 것입니다 사용자가이 -access 그가 게시하려고 "뉴스를 추가"합니까 :
NewsPoster
- 은 확인해야합니다 뉴스 CONTROLER의 사후 조치를 따라서 뉴스를
을 추가 하시겠습니까?
실제로이 속성을 사용하여 지정하는 것이 좋으므로 실제 조치 코드는 더 명확하고 호출자에게는 적절한 액세스가 있다고 가정합니다.
희망 사항은 이해가 되길 바라며, 어디에서 읽을지를 알 수 있습니다.
(오, 나는이 질문이 이전에 몇 가지 변종으로 대답되어 왔음을 확신합니다. 나는 그것을 찾지 못했을 것입니다. 만약 당신이 그들에게 도움이된다고 생각한다면, 나는 단일 링크 답장을 신경 쓰지 않을 것입니다. 읽기)
NewsAdmin_Europe_AddNews와 비슷한 것을 사용했지만 NewsAdmin 역할에 "DeleteComments"액세스를 쉽게 추가 할 수 없습니다. 대신에 NewsAdmin_ % s_DeleteComments를 생성해야합니다. – Thomas
그들은 서로 다른 역할을합니다. 권한 당 하나의 역할을 사용하십시오. 역할 공급자는이 아이디어를 바탕으로합니다. 명확히하기 : 당신에게 "NewsAdmin"은 역할입니다. 괜찮 았지만 "NewsAdmin_Europe_DeleteComments"와는 다른 역할을합니다. 이는 공급자에게 중요한 것입니다. 제공자의 역할 개념에는 역할을 고려한 것과 권한을 고려한 것이 모두 포함됩니다. –
당신은 완전합니다. 나에게 NewsAdmin은 역할이고 "추가, 편집 등"은 해당 역할을 구성하는 별도의 권한입니다. 개념적으로 역할 공급자 개념은 잘, unsalable 및 unmaintainable 보인다. (나는 잘하면 틀리다.). 실제 응용 프로그램에서 "NewsAdmin_Europe_ *"역할을 가진 모든 사용자에게 "NewsAdmin_Europe_DeleteComments"역할을 추가하는 방법은 무엇입니까? 또 다른 문제는 X, Y, Z에 "NewsAdmin"을 넣는 것보다 유럽의 각 잎에 대해 4 가지 역할을 UI가 혼란스럽게하는 것입니다. 시간 내 주셔서 감사합니다. – Thomas