Eu gostaria de adicionar autorização a um controlador, para várias funções de uma vez.
Normalmente seria assim:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Mas eu armazenei minhas funções em constantes, uma vez que elas podem mudar ou ser estendidas em algum ponto.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Não posso fazer isso, pois a string deve ser conhecida no momento da compilação:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Existe uma maneira de contornar o problema?
PODERIA escrever uma const que simplesmente contenha "RoleA, RoleB, RoleC" - mas não gosto de strings mágicas e esta é uma string mágica. Mudar o nome de uma função e esquecer de mudar a string combinada seria um desastre.
Estou usando MVC5. A identidade e a função do ASP.NET são conhecidas em tempo de compilação.