Проблема поймать REQUIRES_AUTH и xhr.status из HttpContext.Response - PullRequest
1 голос
/ 27 сентября 2010

Попытка найти решение для перенаправления на страницу входа после Ajax-вызова, если пользователь не аутентифицирован дольше.

Я использовал описанный здесь метод Как управлять запросом на перенаправление после jQuery Ajaxвызов

private static void RedirectionToLogin(ActionExecutingContext filterContext)
{
    string redirectOnSuccess = filterContext.HttpContext.Request.Url.AbsolutePath;
    string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
    string loginUrl = FormsAuthentication.LoginUrl + redirectUrl;

    filterContext.HttpContext.Response.AddHeader("REQUIRES_AUTH", "1");
    filterContext.HttpContext.Response.StatusCode = 401;
    filterContext.HttpContext.Response.Redirect(loginUrl, true);
}

JavaScript -

$(window).ajaxComplete(function (event, request, settings) {
    alert(request.getResponseHeader('REQUIRES_AUTH'));
    alert(request.status);
    if (request.getResponseHeader('REQUIRES_AUTH') === 1) {
        window.location = App.basePath + "Login/LogOn";
    {
});

Если пользователь вышел из системы, request.getResponseHeader ('REQUIRES_AUTH')) всегда равен NULL

alt text

Почему request.getResponseHeader ('REQUIRES_AUTH')) равен NULL ???

1 Ответ

0 голосов
/ 04 ноября 2010

Я думаю, что причина, по которой вы получаете нулевое значение для "REQUIRES_AUTH", заключается в том, что ваш логин на странице

    ~/Login/Logon 

не требует аутентификации. Что правильно, иначе вы не сможете войти! Кроме того, ваш javascript имеет фигурную скобку в неправильном направлении. (опечатка) должно быть:

$(window).ajaxComplete(function (event, request, settings) {

    alert(request.getResponseHeader('REQUIRES_AUTH'));

    alert(request.status);

    if (request.getResponseHeader('REQUIRES_AUTH') === 1) {
        window.location = App.basePath + "Login/LogOn";
    }
});

Я также ищу хорошее решение этой проблемы, но все еще немного застрял. Вам удалось решить эту проблему? если да, то как тебе это удалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...