MVC配置授权角色值和强类型角色

时间:2013-04-14 11:08:05

标签: asp.net-mvc-3 authorize-attribute

为了为特定角色授权控制器,控制器类需要以下属性:

[Authorize(Roles = "SampleRole")]

这要求角色名称在Controller上进行硬编码,似乎不是一个灵活的解决方案。 我的问题是,可以在web.config中指定该角色的值并在控制器中使用该键吗?

<appSettings>
    <add key="SampleRoleKey" value="SampleRole" /> 
    ...
</appSettings>

在控制器中,

[Authorize(Roles = "SampleRoleKey")]

另一个问题是,我们可以使用强类型角色来授权控制器吗?

1 个答案:

答案 0 :(得分:4)

使用带有public const-s的静态类:

public static class Roles
{
    public const string SampleRoleKey = "SampleRole";
}

创建一个从AuthorizeAttribute派生的自定义MyAuthorizeAttribute,以获得一个可以处理字符串数组的属性,然后:

[MyAuthorize(MyRoles = new[]{ Roles.SampleRoleKey }]