MVC ASP.NET вызывает запрос Ajax быть перенаправленной к странице входа в систему, когда сессия FormsLogin больше не активна

У меня есть некоторые вызовы Ajax, которые представляют PartialViewResults с помощью jQuery. Метод Ajax. Это работает отлично, я представил свои представления точно способ, которым я хочу.

Проблема возникает, когда я оставляю на виду страницу некоторое время, и сессия автора Форм истекает. Когда я нажимаю действие, которое выполняет запрос Ajax, это показывает страницу входа в систему в моем отделении.

Я хочу, чтобы это перенаправило страницу WHOLE к странице входа в систему.

16
задан abatishchev 7 August 2010 в 17:28
поделиться

1 ответ

Настройте его в методе Application_EndRequest () Global.asax

. Вы можете проверить, является ли запрос запросом ajax, а также проверить, отправляет ли он HTTP-перенаправление (302), если это так, затем мы действительно хотим отправить 401.

protected void Application_EndRequest() {
            var context = new HttpContextWrapper(Context);
            // If we're an ajax request, and doing a 302, then we actually need to do a 401
            if (Context.Response.StatusCode == 302 && context.Request.IsAjaxRequest()) {
                Context.Response.Clear();
                Context.Response.StatusCode = 401;
            }
        }

Затем в вашем клиентском коде в глобально доступной области:

MyNamespace.handleAjaxError = function (XMLHttpRequest, textStatus, errorThrown) {
    if (XMLHttpRequest.status == 401) {
        // perform a redirect to the login page since we're no longer authorized
        window.location.replace("logout path");
    }    
    } else {
        MyNamespace.displayGeneralError();
    }
};

  $.ajax({
  type: "GET",
  url: userAdmin.addUserActionUrl,
  success: userAdmin.createUserEditorDialog,
  error: MyNamespace.handleAjaxError
 });
24
ответ дан 30 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: