0

我有一个站点,其中包含用于执行操作的链接。如果用户不是管理员角色,有些需要隐藏。我正在检查后端,以防有人直接输入 url 等等。但是在剃刀视图中拥有这个就足够了吗?

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

2 回答 2

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();
    }
} 
于 2012-05-03T09:26:21.187 回答
0

是的。还将属性添加到控制器中的相应方法以防止手动调用

[Authorize( Roles = "Admin" )]
于 2012-05-03T09:26:08.030 回答