Custom AuthorizeAttribute работает на контроллере, но не на методе - PullRequest
0 голосов
/ 14 марта 2011

Я создал собственный AuthorizeAttribute:

public AjaxAwareAuthorizeAttribute : AuthorizeAttribute {
    public override void OnAuthorization(AuthorizationContext filterContext) {
        base.OnAuthorization(filterContext);
        if(filterContext.Result is HttpUnauthorizedResult && filterContext.HttpContext.Request.IsAjaxRequest()) {
            filterContext.HttpContext.Items["RequestWasNotAuthorized"] = true;
        }
    }
}

Когда я применяю это к классу контроллеров, происходит событие OnAuthorization, и описанный выше обработчик выполняется должным образом, но когда он применяется к любому методу в контроллере, ничего не происходит!?

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Я хотел бы отдать Робоцуши кредит здесь, но он не ответил с ответом.

Настоящая проблема с моим кодом была в коде CustomFilterAttributeFilterProvider.

0 голосов
/ 15 марта 2011

Robotsushi что-то здесь!

В моем коде начальной загрузки есть следующее:

var oldProvider = FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider);
FilterProviders.Providers.Remove(oldProvider);

var newProvider = new CustomFilterAttributeFilterProvider(kernel);
FilterProviders.Providers.Add(newProvider);

Это был код, который я добавил после добавления пользовательского атрибута. Когда я удаляю эти строки кода, атрибут срабатывает, как и ожидалось.

...