最佳答案
我想将授权添加到控制器中,一次用于多个角色。
通常情况下是这样的:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
但是我已经将角色存储在 const 中,因为它们可能会在某个时候更改或扩展。
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
我不能这样做,因为必须在编译时知道字符串:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
有办法避开这个问题吗?
我可以写一个常数,其中只包含“角色 A,角色 B,角色 C”-但我不喜欢魔术字符串,这是一个魔术字符串。更改“角色”的名称并忘记更改组合字符串将是一场灾难。
我使用的是 MVC5.ASP.NET 标识和编译时已知的角色。