Обнаружение тайм-аута аутентификации в обработчике и перенаправление всей страницы на страницу входа

Я пишу приложение, в котором кто-то может редактировать абзацы на веб-странице. jQuery используется для отправки и получения отредактированных данных абзаца обработчику, который сохраняет их или считывает из базы данных. Проблема в том, что если время проверки подлинности с помощью форм истекло, я получаю страницу входа от своего обработчика. Есть ли способ определить на клиенте или сервере, истекло ли время аутентификации, и перенаправить всю страницу на страницу входа?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
1 840
2

Ответы 2

В моем приложении на стороне клиента я проверяю HTTP-статус возвращаемой страницы. Если это 401 (несанкционированная ошибка), я представляю форму входа в модальном диалоговом окне. Вы можете повторно пройти аутентификацию таким образом или просто перенаправить, используя

window.location = 'http://someurl.com';

Это требует сотрудничества с сервером, чтобы вернуть 401, но мне кажется, что это самый чистый способ.

Звучит неплохо, но как мне заставить мое приложение возвращать 401, а не 200 и страницу входа?

Sprintstar 14.01.2009 18:30

Смотрите мой ответ, почему я думаю, что вы не можете.

Crescent Fresh 15.01.2009 02:21

См. Мой ответ о том, почему это возможно в недавней версии .NET 3.5.

Peter J 29.09.2009 23:21

Недавно я разработал метод обработки ошибок 401, который, я думаю, сработает и для вас. Проблема в прошлых версиях .NET заключается в том, что страницы ошибок не возвращают правильный код ошибки, они просто 302 на указанную страницу.

В .NET 3.5 ваш обработчик ошибок может «переписывать» вместо «перенаправления» с помощью redirectMode:

<customErrors mode = "On" defaultRedirect = "/err.aspx" redirectMode = "ResponseRewrite">
  <error statusCode = "404" redirect = "/404.aspx"/>
</customErrors>

Поскольку все запросы (включая вызовы веб-служб) теперь будут возвращать правильный код состояния HTTP, вы можете правильно использовать код 404/401/500 в своем javascript.

Затем в вашем клиентском коде (он находится в jQuery и перенаправляет любые ошибки, а не только 401, но вы поняли идею):

$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
  window.location.href('/error.aspx');
});

Похоже, это не меняет способ работы перенаправления проверки подлинности с помощью форм. Вы пробовали это?

StriplingWarrior 09.09.2010 20:50

Да, он работает, как описано здесь. Обратите внимание, что для этого требуется, чтобы приложение работало с .NET 3.5. В 2.0 это не сработает.

Peter J 10.09.2010 02:18

Другие вопросы по теме