我希望为一个控制器同时添加多个角色的授权。
通常情况下,这会像这样:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
但是我已经将我的角色存储在常量中,因为它们可能会在某个时候更改或扩展。
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
我无法做到这一点,因为该字符串必须在编译时已知:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
有没有方法可以规避这个问题?
我可以写一个常量,其中只包含“RoleA, RoleB, RoleC”-但我不喜欢魔术字符串,而且这是一个魔术字符串。改变角色名称并忘记更改组合字符串的名称将是一场灾难。
我正在使用MVC5、ASP.NET身份验证和角色,这些在编译时已知。