asp.net mvc 3 User.IsInRole("Admin")

the*_*ain 0 asp.net asp.net-mvc asp.net-mvc-3

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

<ul>
<li>Home</li>
<li>Items</li>
@if(User.IsInRole("Admin"){
    <li>Users</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)

Rod*_*eek 5

是的,这就足够了.

或者我在最近使用的另一篇文章中发现:

public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
     return evaluation ? value : MvcHtmlString.Empty;
}
Run Code Online (Sandbox Code Playgroud)

所以你可以使用这个:

@Html.ActionLink("Create New", "Create").If(User.IsInRole("Admin"))
Run Code Online (Sandbox Code Playgroud)

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

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