我有一个站点,其中包含用于执行操作的链接。如果用户不是管理员角色,有些需要隐藏。我正在检查后端,以防有人直接输入 url 等等。但是在剃刀视图中拥有这个就足够了吗?
<ul>
<li>Home</li>
<li>Items</li>
@if(User.IsInRole("Admin"){
<li>Users</li>
}
</ul>
我有一个站点,其中包含用于执行操作的链接。如果用户不是管理员角色,有些需要隐藏。我正在检查后端,以防有人直接输入 url 等等。但是在剃刀视图中拥有这个就足够了吗?
<ul>
<li>Home</li>
<li>Items</li>
@if(User.IsInRole("Admin"){
<li>Users</li>
}
</ul>
是的,这就足够了。
或者正如我在最近使用的另一篇文章中发现的那样:
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();
}
}
是的。还将属性添加到控制器中的相应方法以防止手动调用
[Authorize( Roles = "Admin" )]