Chciałbym dodać uprawnienia do kontrolera dla wielu ról jednocześnie.
Zwykle wyglądałoby to tak:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Ale zapisałem swoje role w stałych, ponieważ w pewnym momencie mogą się zmienić lub rozszerzyć.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Nie mogę tego zrobić, ponieważ ciąg znaków musi być znany w czasie kompilacji:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Czy istnieje sposób na obejście problemu?
Mógłbym napisać stałą, która po prostu zawiera „RoleA, RoleB, RoleC” - ale nie lubię magicznych ciągów, a to jest magiczny ciąg. Zmiana nazwy roli i zapomnienie o zmianie połączonego ciągu byłoby katastrofą.
Używam MVC5. Tożsamość ASP.NET i rola są znane w czasie kompilacji.