2013-02-20 2 views
1

MVC 4 (.NET 4.5)에서 권한 부여를 구현하는 방법을 찾고 있는데 특히 SimpleMembership에 대해 읽고 있습니다. 이름과는 별도로 추가 속성이있는 역할을 MVC에있는 일반적으로 허용되는 방법이 있습니까?사용자 지정 속성이있는 MVC 역할

예를 들어, CMS를 설계 중이며 사용자가 수정할 수있는 Writer과 같은 역할을 수행 할 수 있기를 원한다고 가정 해 보겠습니다. 그러나 역할을 단일 페이지로 제한하려고합니다. 내가 해야할지 알고있는 유일한 방법은 각각의 역할이 각각 Writer_<PageID>과 같은 이름이 될 수있는 각 페이지에 대해 별도의 역할을 갖는 것입니다. 이보다 더 좋은 패턴이 있습니까, 아니면 우리가 할 수있는 거의 모든 패턴입니까? 뭔가를 할 수 있도록 몇 가지 방법이있을 것입니다 경우

이상적으로는, 내가 궁금하네요 원격으로 좋아하는 대신의

public ActionResult EditPage(Page page) { 
    WriterRole role = new WriterRole(page); 

    if (!User.IsInRole(role)) { 
     return NotAuthorized(); 
    } 

    // Edit... 
} 

을 :

이 하나가 내가 할 것입니다
public ActionResult EditPage(Page page) { 
    string role = "Writer_" + page.Id; 

    if (!User.IsInRole(role)) { 
     return NotAuthorized(); 
    } 

    // Edit... 
} 
+0

나는 간단한 회원을 훑어 보았고 나에게 그렇게 단순하지 않게 보였다. 현재 진행중인 프로젝트에 대해 현재 회원 가입을 유지하기로 마음 먹었습니다. –

+0

@ 닉, SimpleMembership 외부에서 할 수있는 바를 찾고 싶습니까? – Eric

+1

문제를 해결하려면 볼 수있는 페이지의 사용자 ID와 페이지 ID가 들어있는 데이터베이스 테이블이 있어야합니다. 아마 이것에서 속성을 만들 수 있습니다. 나는 역할이 그것과 관련이 없다고 생각한다. 당신의 기준은 그들에게 너무 구체적이다. –

답변

2

그런 다음 작성자 역할이 해당 사용자가 편집 가능한 리소스를 소유하고 있는지 확인하기 위해 UserId를 확인합니다.

[Authorize(Roles = "Writer")] 
public ActionResult EditPage(Page page) { 
    if (User.UserId == page.UserId) { ... } 
} 
+0

페이지가 여러 편집기를 가질 수있는 경우에는 작동하지 않습니다. 페이지에 편집자 목록을 저장할 수도 있고 사용자가 편집 가능한 페이지 목록을 저장할 수도 있지만 그와 같은 역할과 분리 된 것은 더러운 것처럼 보입니다 (사실, 모든). – Eric