Ich möchte einem Controller eine Autorisierung für mehrere Rollen gleichzeitig hinzufügen.
Normalerweise würde das so aussehen:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Aber ich habe meine Rollen in consts gespeichert, da sie sich irgendwann ändern oder erweitern könnten.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Ich kann dies nicht tun, da die Zeichenfolge zur Kompilierungszeit bekannt sein muss:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Gibt es eine Möglichkeit, das Problem zu umgehen?
Ich könnte eine Konstante schreiben, die einfach "RoleA, RoleB, RoleC" enthält - aber ich mag keine magischen Strings und dies ist ein magischer String. Das Ändern des Namens einer Rolle und das Vergessen, die kombinierte Zeichenfolge zu ändern, wäre eine Katastrophe.
Ich benutze MVC5. Die ASP.NET-Identität und die Rolle sind zur Kompilierungszeit bekannt.