4

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

[Authorize(Roles = "SampleRole")]

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

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

在控制器中,

[Authorize(Roles = "SampleRoleKey")]

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

4

1 回答 1

4

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

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

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

[MyAuthorize(MyRoles = new[]{ Roles.SampleRoleKey }]
于 2013-04-14T11:16:52.777 回答