Я хочу добавить авторизацию к контроллеру сразу для нескольких ролей.
Обычно это выглядит так:
[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 и роль известны во время компиляции.