2012-05-03 3 views
0

나는 작업 수행을위한 링크가있는 사이트가 있습니다. 사용자가 관리 역할을 수행하지 않으면 숨겨져 있어야합니다. 누군가가 직접 URL을 입력하는 경우를 대비하여 백엔드를 확인하고 있지만 면도기보기에서이 URL을 가지고 있으면 충분합니까?asp.net mvc 3 User.IsInRole ("Admin")

<ul> 
<li>Home</li> 
<li>Items</li> 
@if(User.IsInRole("Admin"){ 
    <li>Users</li> 
} 
</ul> 

답변

5

그래도 충분합니다. 나는 최근에 사용되는 또 다른 포스트에서 발견

또는 같이

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

그래서 당신은이를 사용할 수 있습니다

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

을하지만, 당신은 당신이 필요 다른 페이지로의 링크를 사용하는 경우 특정 역할이 아닌 경우 액세스하지 못하도록합니다.

public class HomeController : Controller 
{ 
    [Authorize(Roles="Admin")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 
+0

그 '다른 포스트'에 대한 링크를 제공하는 모든 변경 –

+0

http://stackoverflow.com/questions/6981853/asp : 당신은 또한 당신이 액세스하지 못하도록하고자 할 컨트롤러의 권한 부여 속성을 포함해야한다 -net-mvc3-razor-display-actionlink-on-user-role입니다! –

0

예. 또한 컨트롤러의 각 메소드에 속성을 추가하여 수동 호출을 방지하십시오.

[Authorize(Roles = "Admin")]