asp.net mvc 3 User.IsInRole(“Admin”)

时间:2012-05-03 09:21:34

标签: asp.net asp.net-mvc asp.net-mvc-3

我有一个网站,其中包含用于执行操作的链接。如果用户不在管理员角色,则需要隐藏某些内容。我正在检查后端,以防万一有人直接在网址上输入等等,但这是否足以在剃须刀视图中进行此操作?

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

2 个答案:

答案 0 :(得分:5)

是的,这就足够了。

或者我在最近使用的另一篇文章中找到了:

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

所以你可以使用它:

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

但是,如果您正在使用指向其他页面的链接,而这些页面在不在特定角色时需要阻止访问。您还应该在要阻止它们访问的控制器中包含Authorize属性:

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

答案 1 :(得分:0)

是。还要在控制器中为相应方法添加属性以防止手动调用

[Authorize( Roles = "Admin" )]