2013-08-20 4 views
11

이렇게 바보 같은 질문이 들리지만 관리자 사용자 만 링크를 표시하려면 어떻게해야합니까?
홈/회사 소개/연락ASP.NET MVC5의 특정 역할에서 링크 숨기기

그리고 관리자 사용자보고 다음 링크 :
홈/회사 소개/연락처/관리자

나는에 제한 시도

은 일반 사용자는 다음 링크를보고 가정 컨트롤러를 연결하고 메뉴에 컨트롤러를 연결합니다. 하지만 여전히 모든 사람을위한 링크를 보여 주며 관리자 이외의 다른 사람에게만 액세스를 허용하지 않습니다.

보기가 오버로드 될 수 있습니까?

+0

, 사용자의 역할을 평가해야합니다

@Html.ActionLink("Index", "Home") @Html.ActionLink("About", "Home") @Html.ActionLink("Contact", "Home") @if (User.Identity.IsAuthenticated){ if (User.IsInRole("Admin")){ @Html.ActionLink("Admin", "AdminController") } } 

그리고 당신의 Admin 액션 메소드에 [Authorize] 속성을 추가하는 것을 기억 질문이 –

답변

30

사용중인 회원/사용자 공급자에 따라 사용자가 로그인되어 있고 특정 역할에 속한 경우보기에서만 직접 확인할 수 있습니다.

이렇게하면 끝날 것입니다. 기록 ... 이런 종류의 이렇게 많은 응답이

그냥 숨길 것
[Authorize(Roles="Admin")] 
public ActionResult Admin() 
{ 
    // ... 
    return View(); 
} 
+1

사용자가 인증되었는지 확인하는 것이 가장 좋습니다 (또는 명확성 때문에) ** 및 ** 특정 역할을하는 경우 **? 내가 생각하는 방식으로 사이트에 자신이 누군지 말하지 않으면 어떤 역할도하지 않을 것입니다. 이는 사전 인증을 의미합니다. 나는 ** 선택의 여지가 있지만 단지 궁금해하는 ** 질문을하지 않는다. 내 보안 기술은 비행 중에있는 펭귄과 같습니다. (차이점은 게으른 펭귄 인 hihi와 달리 그 상태를 야심 차게 바꿀 휴일을 사용하는 것입니다.) –

+0

'Authorize' 속성은 사용자가 기본적으로 인증되었는지 확인한 다음 선택적으로 역할을 추가 할 수 있습니다. –

+1

오, 나는 그것이 분명하지 않다는 것을 깨닫습니다. (분명히, 독서는 당신의 강한 편이 아닙니다, hehe). 나는 ** 첫 번째 ** 샘플 (CSHTML 파일, 면도기 마크 업)의 4 번과 5 번 라인을 언급하고있다. –