Chciałbym dodać autoryzację do kontrolera, dla wielu ról naraz.Autoryzuj atrybut z wieloma rolami
Normalnie, że będzie wyglądać następująco:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Ale mam przechowywać swoje role w consts, ponieważ mogą one zmienić lub zostać przedłużony w pewnym momencie.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Nie mogę tego zrobić, ponieważ łańcuch musi być znany w czasie kompilacji:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
czy jest jakiś sposób na obejście tego problemu?
Mogę napisać const, który po prostu zawiera "RoleA, RoleB, RoleC" - ale nie lubię magicznych ciągów znaków i jest to magiczny ciąg znaków. Zmiana nazwy roli i zapomnienie zmiany połączonego ciągu byłoby katastrofą.
Używam MVC5. Identyfikacja ASP.NET i rola są znane w czasie kompilacji.
czy używasz publicznych ciągów stałych RoleA = "RoleA"; lub jak pisałeś? –
możliwy duplikat [zezwól na dostęp wielu kontrolerom do ról kontrolera] (http://stackoverflow.com/questions/700166/allow-multiple-roles-to-access-controller-action) –