У меня сейчас две роли:
[PrincipalPermission (SecurityAction.Demand,
Роль = "Домен \ Admin")]
[PrincipalPermission (SecurityAction.Demand,
Роль = "Домен \ AnotherRole")]
Проблема в том, что этот унаследованный код специфичен для домена, и я хочу в итоге получить роли из файла web.config, чтобы я мог работать на виртуальной машине, не входящей в домен.
Я видел такой пример:
PrincipalPermission permCheck = new PrincipalPermission(
null,
@"Domain\Admin");
permCheck.Demand();
Поскольку это вызывает исключение, если пользователь не в роли, как мне изменить этот пример, чтобы разрешить любую из двух ролей? Я мог бы использовать несколько IPrincipal.IsInRole () и затем выдать собственное исключение, но, похоже, есть способ использовать метод .Demand с несколькими ролями.
Обновление 12/21: пример кода на основе ссылки Union из ответа Ладислава ниже:
PrincipalPermission ppAdmin = new PrincipalPermission(null, @"Domain\Admin");
PrincipalPermission ppAnother = new PrincipalPermission(null, @"Domain\AnotherRole");
(ppAdmin.Union(ppAnother)).Demand();
Но AzMan (предложенный Ладиславом выглядит как лучшее, но более сложное решение).