2010-01-14 1 views
6

어쩌면 내가 잘못된 방향으로 접근하고 있으며 액션 필터에서 모든 것을 수행해야합니다.이 경우 올바른 방향으로 나를 가리켜주세요!ASP.NET MVC 사용자가 [x] 그룹에 속하는지 확인하십시오.

if(Request.IsAuthenticated) 
    return View("IndexRegistered"); 
else 
    return View("IndexGuest"); 

이 잘하지만 말을 내가으로 분할하려는 : 하나의 HomeController 인덱스 작업은, 내용의 두 가지 유형을 제공합니다과 같이 있도록 내 ASP.NET MVC 응용 프로그램을

을 설정하고있어 3 명의 관리자가 자신의 페이지를 얻게됩니다 ...

if(Request.IsAuthenticated) 
{ 
    if(/* user is a member of administrators */) 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

누군가이 퍼즐의 누락 된 부분에 대해 가르쳐 줄 수 있습니까?

답변

20

권한 부여 Action FilterRoles 재산 사용

[Authorize(Roles="Administrators,Moderators")] 
public ActionResult SomeAction(){ 

} 

을 또는 User.IsInRole() 방법을 사용 : 당신이 인증 공급자를 보면

if(User.IsInRole("Administrator")) { ... } 
+0

http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/ –

+3

을 경우 (User.IsInRole ("관리자")) 정확히 내가 필요한, 감사합니다! 이 작업을 수행하는 더 좋은 방법이 있다면 입력을 위해 아직 열어두고 있습니다. Authorize를 사용하는 첫 번째 인스턴스에서는, 내가 이해할 때를 제외하고는 나에게 더 나은 방법이 될 것 같지만 (실제로는 그렇게 할 수는 없지만) 담요 허용/거부 조건 만 제공합니다. 내가 무엇을하고 있는지. – nathanchere

+0

Role 속성에 여러 역할을 추가 할 수 있습니다. 코드를 업데이트 할 것입니다. –

2

가에서 아웃 - 오브 - 박스 오는 기본 MVC 프로젝트 템플릿을 사용하면 쉽게 자신의 역할 지원을 추가하고 세션에서 추적하므로 위의 코드는 다음과 같이됩니다.

if(Request.IsAuthenticated) 
{ 
    if(Session["Role"] == "Administrator") 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

다음과 같은 가능성 열립니다

if(Request.IsAuthenticated) 
    return View("Index" + Session["Role"]); 
else 
    return View("IndexGuest");