2

에서 작동 할 수있는 권한에 대한 조건 코드를 얻는 데. Manager는 관리자 역할로, 클라이언트는 Contributor 역할로 스테레오 타입으로 지정됩니다.는 힘든 시간을 내보기에이 같은 일을하려고 과수원보기

관리자가 로그인하면 관리자보기 만 표시됩니다. 그러나 Manager에는 클라이언트 권한이 있으므로 논리는 첫 번째 (클라이언트보기) 만 표시합니다. 두 문 모두 if을 만들면 두 문구가 모두 나타납니다. 클라이언트로 로그인하면 클라이언트보기 만 표시됩니다.

그러나 이것은 중요한 부분을 수행하지 않고도 주위를 코딩 할 수 있습니까? 부품에 묶이지 않은 프런트 엔드를 사용하고 있으므로 ContentPermission 모듈은 옵션이 아닙니다. 이

@if (AuthorizedFor(MyNameSpace.Security.Permissions.Client)) 
{ 
    if (AuthorizedFor(MyNameSpace.Security.Permissions.Manager) { 
     <p>This is the Manager view</p> 
    } else { 
     <p>This is the Client view</p> 
    } 
} 

답변

2

뭔가 당신이 그랬던 것처럼,하지만 가장 강력한 역할로 시작 : 그것은 가장에 온다 당신은 오래, 더 역할이 확장 할 수 있습니다

@if (AuthorizedFor(MyNameSpace.Security.Permissions.Manager)) 
{ 
    <p>This is the Manager view</p> 
} 
else if (AuthorizedFor(MyNameSpace.Security.Permissions.Client)) 
{ 
    <p>This is the Client view</p> 
} 

강력한 역할 우선 사용자는 역할 구성원이 허용하는 가장 강력한 옵션을 항상 보여줍니다.

+0

간단 ... 감사합니다! – REMESQ

+0

마지막으로 관리자 (관리자> 관리자> 스태프> 클라이언트)가 각각 3 개 이상 사용 권한을 갖고있는 경우이 방법을 사용할 수 있습니까? 아니면 많이 바뀔까요? – REMESQ

+0

허가 당 다른 레벨, http://pastebin.com/umRV7i4R이 필요하지만 너무 많은 레벨의 경우 우아한 솔루션이 아닙니다 – mberacochea

1

같은