2014-11-01 3 views
2

사용자가 주어진 작업에 대한 권한이있는 경우에만 작업 링크를 표시하고 싶습니다. aurhorization을 반복하지 않고 cshtml에서이를 수행 할 수있는 좋은 방법이 있습니까? 속성에서 이미 설정 한 동일한 권한을 확인하지 않습니다.승인 된 경우 작업 링크

감사합니다.

답변

0

당신은 데이터베이스에 링크를 저장할 수 있습니다. 및 사용자에 따라 권한을 할당하십시오. 전망에 는 권리에 따라 연결을 만든다.

public static MvcHtmlString If(this MvcHtmlString value, bool evaluation) 
{ 
    return evaluation ? value : MvcHtmlString.Empty; 
} 

그래서 당신이 사용할 수 있습니다하십시오 기준은 다음과 같이 충족 될 때

0
[HttpPost] 
    [InitializeSimpleMembership] 
    [Authorize(Roles = "YourRole")]   
    public ActionResult Create(Product p) 
    { 
     ... 
    } 

    @if (User.IsInRole("YourRole")) 
    { 
     @Html.ActionLink("Create Product", "Create") 
    } 
+0

ASP.NET ID는 작동하지 않습니다. 'IsInRole' 예외를 throw하고 다소 obselete입니다. – DarthVader

+1

컨트롤러에이 속성을 추가 했습니까? [InitializeSimpleMembership] –

+0

지난 10 년 동안 ASP.NET ID가 있습니다. – DarthVader

0

난 단지 출력을 반환에 과거에이 도우미 함수를 사용한

@Html.ActionLink("Create New", "Create").If(User.IsInRole("Your Role")) 

이 읽기 ​​쉬운입니다 짧음

+0

나는이 대답을 보았고 두 곳의 다른 장소에서 나의 권리를 반복하는 것을 포함하지 않는 무언가를 찾고 있었다. –

관련 문제