Определение времени ожидания аутентификации в обработчике и перенаправление всей страницы на страницу входа - PullRequest
4 голосов
/ 14 января 2009

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

Ответы [ 2 ]

1 голос
/ 29 сентября 2009

Недавно я разработал метод обработки 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');
});
1 голос
/ 14 января 2009

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

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

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

...