Me gustaría agregar autorización a un controlador, para múltiples roles a la vez.
Normalmente, se vería así:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Pero he almacenado mis roles en consts, ya que pueden cambiar o extenderse en algún momento.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
No puedo hacer esto, ya que la cadena debe conocerse en el momento de la compilación:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
¿Existe alguna forma de evitar el problema?
PODRÍA escribir una constante que simplemente contenga "RoleA, RoleB, RoleC", pero no me gustan las cadenas mágicas y esta es una cadena mágica. Cambiar el nombre de un rol y olvidarse de cambiar la cadena combinada sería un desastre.
Estoy usando MVC5. La identidad ASP.NET y el rol se conocen en tiempo de compilación.