Пользовательский атрибут Authorize не работает для просроченных запросов Ajax - PullRequest
2 голосов
/ 29 октября 2009

У меня есть собственный атрибут авторизации на моих контроллерах, и он не вызывается при истекших запросах ajax. Я использую аутентификацию форм и вызываю методы контроллера через $ .ajax (jQuery). Запрос ajax возвращает мою страницу входа в систему, и я, кажется, не могу перехватить это.

Спасибо.

UPDATE: Я понял, почему: я прокомментировал раздел авторизации в моем файле web.config следующим образом:

  <authentication mode="Forms">
      <forms loginUrl="/Login" timeout="1" slidingExpiration="false"/>
    </authentication>
    <!--<authorization>
      <deny users="?"/>
    </authorization>-->

Теперь мой фильтр авторизации вызывается даже после истечения срока действия. Оказывается, что правила авторизации Web.config имеют приоритет над фильтрами авторизации.

Ответы [ 3 ]

4 голосов
/ 29 октября 2009

Не возвращать 401 несанкционированным. ASP.NET перехватывает это и перенаправляет на страницу входа, определенную в web.config. Для AJAX вместо этого верните что-то еще, например 403.

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

Используйте context.HttpContext.Request.IsAjaxRequest(), чтобы определить, является ли запрос запросом Ajax или нет. Проверьте больше здесь:

Авторизация атрибута и jquery AJAX в asp.net MVC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...