Ваше действие никогда не будет выполнено, если истек срок действия файла cookie аутентификации. Модуль проверки подлинности форм напрямую перенаправляет на страницу входа. Одна из возможностей обнаружить это происходит из сценариев клиента - установить настраиваемый заголовок HTTP в действии контроллера, обслуживающего эту страницу входа:
public ActionResult LogOn()
{
var model = ...
Response.AppendHeader("X-LOGON", "true");
return View(model);
}
, а затем при выполнении запроса AJAX вы можете использовать метод getResponseHeader
для объекта XHR, чтобы проверить, был ли установлен заголовок X-LOGON
, что означает, что сервер перенаправлен на страницу входа. В этом случае в вашем успешном обработчике AJAX вместо простого внедрения ответа сервера в DOM или использования возвращенного JSON вы можете показать некоторое предупреждающее сообщение, информирующее пользователя о том, что время его сеанса аутентификации истекло, и ему необходимо снова войти в систему. Другая возможность - автоматически перенаправить его на страницу входа, используя метод window.location.href
:
$.ajax({
url: '/home/some_protected_action',
success: function (data, textStatus, XMLHttpRequest) {
if (XMLHttpRequest.getResponseHeader('X-LOGON') === 'true') {
// the LogOn page was displayed as a result of this request
// probably timeout => act accordingly
}
}
});