Несанкционированный результат в ajax-запросах

У меня есть приложение со многими ajax-экшенами (реализованными с помощью JQuery.ajax), которое возвращает JSON или html. Некоторые из них должны быть доступны только авторизованным пользователям, и я украсил их атрибутом [Authorize]. Для не ajax действий, если пользователь не авторизован - система перенаправляет его на страницу авторизации (настроенную в web.config).

Но это неприменимо для действий ajax, т.к. если пользователь был авторизован - он загружает страницу, после этого cookie истекает и он не авторизован, и вместо блока html, который должен заменить старый, он получает мою страницу входа внутри блока .

Я знаю, что могу решить эту проблему вручную, например удалить атрибут [Authorize] и вернуть специальный json/пустой html, если пользователь не авторизован. Но мне не нравится это решение, потому что мне нужно переписать все свои действия и функции ajax. Мне нужно глобальное решение, которое позволит мне не переписывать мои действия (это может быть настраиваемый атрибут авторизации или некоторая пользовательская обработка несанкционированных результатов http).

Я хочу вернуть код состояния, если запрос ajax, и перенаправить на страницу входа, если запрос не ajax.

18
задан Evgeny Levin 7 March 2012 в 20:57
поделиться