Почему base.isAuthorized всегда возвращает false при создании пользовательского атрибута AuthorizeAttribute?

#c# #asp.net-web-api #asp.net-web-api2

#c# #asp.net-web-api #asp.net-web-api2

Вопрос:

Этот фильтр проверяет правильность входящих аргументов. Он не выполняет проверки безопасности, такие как проверка токенов сеанса.

Я бы хотел сохранить любую существующую логику безопасности / авторизации и просто добавить немного для проверки ввода.

  public class ValidateMachineIdTokenAttribute : AuthorizeAttribute
    {
        protected override bool IsAuthorized(HttpActionContext actionContext)
        {
            var baseAuthorized = base.IsAuthorized(actionContext); // <-- always false
            CheckInput(actionContext); // throws exception if no good
            return true;
        }
       ...
   }
  

Я мог бы проигнорировать base.IsAuthorized , но, как я уже сказал, я хочу сохранить любую безопасность.

Комментарии:

1. При использовании вашего атрибута установлены ли какие-либо роли или пользователи? Ваш пользователь вошел в систему? При отсутствии пользователей или ролей, указанных в использовании атрибутов, атрибут base проверяет только, вошли ли они в систему в данный момент.

Ответ №1:

Если вы не хотите, чтобы это влияло на авторизацию, вам следует вместо этого использовать ActionFilterAttribute