У меня есть проект MVC 5 с проверкой подлинности Windows.MVC 5 пользовательская логическая авторизация с использованием проверки подлинности Windows
Я использую по умолчанию WindowsTokenRoleProvider как мой провайдер ролей, и она работает в следующей ситуации:
[CustomAuthorization(Roles = "DOMAIN\example_group")]
public ActionResult Action()...
Он отлично работает. Проблема начинается, когда я хочу использовать пользовательскую роль, например: «Утвердить». Чтобы проверить, кто является реальным утверждающим, я должен запросить специальную таблицу и использовать пользовательскую логику, чтобы решить, является ли текущий человек Подтверждением.
Для того, чтобы сделать это, я заменяю AuthorizeCore
из CustomAuthorize
, и написал что-то вроде этого:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(CheckIfCurrentUserIsAnApprover()){
return true;
}
...........
}
Но что произойдет, когда я добавлю еще одну роли, позволяет сказать Managers
, я должен буду добавить:
if(CheckIfCurrentUserIsManager()){
return true;
}
Как я могу сделать его более общим?
Не могли бы вы просто использовать роль в качестве аргумента? So..CheckIfCurrentUserIsA ("утверждающий"); или CheckIfCurrentUserIsA («Менеджер»); и обрабатывать это в методе? – heymega
Неудачно нет. Мне нужно проверить несколько условий, например: у этого пользователя есть записи X с определенным флагом и т. Д. –