隐藏ASP.NET MVC5中某些角色的链接

时间:2013-08-20 21:08:34

标签: asp.net asp.net-mvc-5 authorization

所以这听起来可能是一个愚蠢的问题,但是如何仅为管理员用户显示链接?

假设普通用户看到以下链接:
主页/关于/联系

管理员用户可以看到以下链接:
主页/关于/联系/管理员

我尝试在控制器中进行限制并在菜单上链接控制器。但它仍然显示每个人的链接,只是不允许访问任何人,但管理员

视图可以重载吗?

1 个答案:

答案 0 :(得分:33)

根据您使用的会员/用户提供商类型,您应该能够直接从View查看用户是否已登录并具有特定角色。

所以你最终会得到类似的东西;

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

请务必在[Authorize]操作方法中添加Admin属性:

[Authorize(Roles="Admin")]
public ActionResult Admin()
{
    // ...
    return View();
}