Я хотів би додати авторизацію до контролера для кількох ролей одночасно.
Зазвичай це виглядатиме так:
[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()
{
}
Чи є спосіб обійти проблему?
Я міг би написати const, який просто містить "RoleA, RoleB, RoleC" - але мені не подобаються магічні рядки, і це магічний рядок. Зміна назви Ролі та забуття змінити комбінований рядок було б катастрофою.
Я використовую MVC5. Ідентичність і роль ASP.NET відомі під час компіляції.