【发布时间】:2014-08-02 15:07:17
【问题描述】:
我想为一个控制器添加授权,一次用于多个角色。
通常看起来像这样:
[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()
{
}
有没有办法绕过这个问题?
我可以编写一个仅包含“RoleA,RoleB,RoleC”的 const - 但我不喜欢魔术字符串,这是一个魔术字符串。更改角色的名称而忘记更改组合字符串将是一场灾难。
我正在使用 MVC5。 ASP.NET 标识和角色在编译时是已知的。
【问题讨论】:
-
你在使用 public const string RoleA = "RoleA";或者正如你所写的那样?
标签: c# asp.net-mvc authorization