我们在控制器上使用[Authorize (Roles="yadda, yadda2")]
属性,我想知道是否有内置机制可以从视图中发现他们是否有权访问?
[Authorize (Roles="System Administrator, Administrator")]
public abstract class OperationsBaseContoller : BaseController
{
// omitted
}
// some view
@if(HasAccessTo<OperationsBaseController>())
{
<a href="#somewhereInOperations">Operations Action</a>
<a href="#anotherInOps">Example</a>
<a href="#oneMore">filler</a>
}
像上面这样的东西会很棒,所以我可以避免渲染无法传递给他们的链接。我做 NOT ,但是,想要在User.IsInRole("....")
中再次将视图中的列表可用角色放入,因为这似乎是维护/重复代码的噩梦。我想如果他们给了我们属性,他们还给出了从视图中检查它的内置方法。
如果没有(我自己找不到),我会写自己的,但是想避免潜在的车轮改造。
答案 0 :(得分:5)
有一些有用的扩展方法可以完全实现这个
Html.ActionAuthorized
Html.ActionLinkAuthorized
发表于
http://vivien-chevallier.com/Articles/create-an-authorized-action-link-extension-for-aspnet-mvc-3
在本文中,我将解释如何创建可识别授权的操作链接扩展,以便我们可以根据其授权隐藏或禁用操作链接。