При создании системы управления контентом, которая включает jquery ajax в свой графический интерфейс, я столкнулся с препятствием. Кажется, что некоторые клиенты тратят слишком много времени на размышления о том, что они собираются написать, и, следовательно, серверная сессия выводит их из системы, естественно, будучи в сети, они понятия не имеют об этом. Когда они пытаются отправить изменения, я использую ajax-вызов на сервер для сохранения данных.
То, что я ожидаю, произойдет дальше, так это то, что приложение сервера MVC вернет статус «401 Unauthorized». Затем я мог бы получить свой jjery ajax-объект, чтобы попросить пользователя войти в систему, а затем повторно отправить изменения после авторизации пользователя.
Однако на самом деле из приложения MVC возвращается статус «302 найдено» и URL-адрес перенаправления на мою страницу формы входа. Страница формы входа возвращает код состояния «200 OK», а объект jquery ajax вызывает событие успеха, которое сообщает пользователю, что все прошло успешно, потому что это то, что говорит приложение MVC.
Есть ли способ заставить приложение MVC играть так, как я думаю, или мне нужно изменить события jjery ajax для обнаружения страницы входа?
Обновление:
Я использовал рефлектор, чтобы взглянуть на код MVC и атрибут авторизации, вернуть NotAuthorizedResult, код которого приведен ниже (0x191 = 401)
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
context.HttpContext.Response.StatusCode = 0x191;
}
Я думаю, что, возможно, HttpModule для авторизации форм просматривает 401 и форсирует перенаправление.