Je voudrais ajouter une autorisation à un contrôleur, pour plusieurs rôles à la fois.
Normalement, cela ressemblerait à ceci:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Mais j'ai stocké mes rôles dans consts, car ils peuvent changer ou être étendus à un moment donné.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Je ne peux pas faire cela, car la chaîne doit être connue au moment de la compilation:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Existe-t-il un moyen de contourner le problème?
JE POURRAIS écrire un const qui contient simplement "RoleA, RoleB, RoleC" - mais je n'aime pas les chaînes magiques et c'est une chaîne magique. Changer le nom d'un rôle et oublier de changer la chaîne combinée serait un désastre.
J'utilise MVC5. L'identité ASP.NET et le rôle sont connus au moment de la compilation.