3

我们在[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>
}

像上面这样的东西会很棒,这样我就可以避免渲染无论如何都无法传递给他们的链接。但是,我不想在视图中再次列出可用角色列表User.IsInRole("....")因为这似乎是维护/重复代码的噩梦。我想如果他们给了我们这个属性,他们也给了一个内置的方法来从视图中检查它。

如果没有(我自己找不到),我会自己写,但想避免潜在的轮子改造。

4

1 回答 1

5

有一些有用的扩展方法可以做到这一点

Html.ActionAuthorized

Html.ActionLinkAuthorized

发表于

http://vivien-chevallier.com/Articles/create-an-authorized-action-link-extension-for-aspnet-mvc-3

在本文中,我将解释如何创建一个授权感知的操作链接扩展,以便我们可以根据其授权隐藏或禁用操作链接。

于 2013-01-28T17:15:08.897 回答