ASP.NET授权属性和管理员用户角色

Jop*_*per 9 authorization asp.net-mvc-3

使用Authorize属性i可以指定允许访问资源的角色.

[Authorize(Roles="User")]
Run Code Online (Sandbox Code Playgroud)

但是,如果我有管理员用户,允许转到任何资源,我也需要指定这个

[Authorize(Roles="User, Administrator")]
Run Code Online (Sandbox Code Playgroud)

但可能有某种方式我可以说某种方式,管理员允许去任何地方,而不是在授权属性中指定这一个?

所以我的意思是,如果代码中的某个地方(在控制器上或在操作上)将是这样,[Authorize(Roles="User")]这意味着允许管理员角色也去那里.

或者我可以动态地将它设置为所有授权角色应用程序何时启动?

有任何想法吗?

更新:

目前我有一个带有Authorize属性的管理控制器,[Authorize(Role="Administrator")]我在一些其他具有属性的控制器中有一些操作,[Authorize(Role="User")]所以"Administrator"如果我找不到更好的解决方案,我还需要添加它.

Dou*_*ain 2

我认为这对你有用。使用 AuthorizeAttribute 创建您自己的基控制器,然后使其他控制器继承您的基类。

[Authorize(Roles="Admin")]
public class MyFancyController : Controller
{
}

[Authorize(Roles = "TaxPayer")]
public class WizardController : MyFancyController
{
...
Run Code Online (Sandbox Code Playgroud)

在我看来,这很可怕。

您有多少个控制器/操作?如果您稍后忘记了这一点并且您可能不希望管理员访问某个页面怎么办?

调试代码会变得更加困难吗?