У меня есть серверный сервер, написанный в asp.net mvc с использованием проверки подлинности с помощью форм. Когда пользователь не аутентифицирован, сервер автоматически отправит 302 перенаправление на действие "Вход" и вернет страницу входа.
На стороне клиента у меня есть список элементов. Этот список доступен только для аутентифицированных пользователей. На странице у меня есть кнопка для обновления списка с помощью Ajax (функция $.ajax jQuery).
Теперь моя проблема в том, что когда билет аутентификации является тайм-аутом, и пользователь нажимает кнопку "Обновить":
- Моя функция отправляет запрос ajax для получения обновленного списка
- Сервер обнаруживает, что билет проверки подлинности недействителен и выдает перенаправление 302.
- Браузер автоматически обрабатывает этот ответ 302 и заставляет мою функцию ajax отправлять другой запрос ajax в действие Login, а конечным результатом является HTML со статусом 200. Мой script запутан, потому что list также является HTML со статусом 200.
То, что я хочу, - это когда билет проверки подлинности является тайм-аутом, и пользователь нажимает кнопку "Обновить", я должен иметь возможность обнаружить это и отобразить сообщение с запросом на вход в систему.
Я попытался обход этого путем добавления пользовательского заголовка (IS_LOGIN) в действие Login и проверить, что в моем ответе ajax. Но это нехорошее решение.
Итак, мои вопросы:
- Каков наилучший способ решения этой проблемы?
- Почему браузер не позволяет нашему дескриптору дескриптора script 302? и просто автоматически заставляет наш ajax создавать другой запрос. Это проблема с библиотекой браузера или jquery? Любые причины для этого? (безопасность,...)
Спасибо за любые ответы.