我有一个网站,其中包含用于执行操作的链接。如果用户不在管理员角色,则需要隐藏某些内容。我正在检查后端,以防万一有人直接在网址上输入等等,但这是否足以在剃须刀视图中进行此操作?
<ul>
<li>Home</li>
<li>Items</li>
@if(User.IsInRole("Admin"){
<li>Users</li>
}
</ul>
答案 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" )]