Переопределить роль авторизации для контроллера - PullRequest
0 голосов
/ 10 июля 2019

У меня есть роль по умолчанию для всех контроллеров, настроенных в моем global.asax

protected override void Configure(HttpConfiguration config)
{
     //Note: Client Authentication Filter is just a fancy AuthorizeAttribute
     config.Filters.Add(new ClientAuthenticationFilter(APIRoles.MYAPI));
}

Это добавляет требование к роли для всех контроллеров. Я хотел бы переопределить эту роль для конкретного контроллера

public class MFAController : ApiController
{
    [HttpGet]
    [Route(AuthAPIRoutes.GET_MFA_DEVICES)]
    [Authorize(Roles = "MyCustomRoles")]
    public MFAMethodDTO[] GetMultiFactorMethods()
    {
        return GlobalFactory<IMFASecurityService>.Instance.GetMultiFactorMethods();
    }
    //...
}

Однако, когда я делаю это. Я получаю сообщение об ошибке, поскольку в моей роли отсутствует исходная роль APIRoles.MYAPI. Есть ли способ по умолчанию переопределить атрибуты AuthorizationAtrributes для контроллеров, чтобы они имели приоритет над глобальным фильтром?

1 Ответ

1 голос
/ 10 июля 2019

Если я правильно понимаю, вы можете сделать, как показано ниже.Это не совсем то, что вам нужно, его нужно настроить.

public class MyAuthorize : AuthorizeAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        // ...
        // if (HttpContext.Current.User == null || HttpContext.Current.User.Identity == null || !HttpContext.Current.User.Identity.IsAuthenticated)
            // throw new Exception("Not logged in");
    }
}

[MyAuthorize]
public bool DoSomthing()
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...