Как определить перенаправление на вход в систему при использовании AJAX с ASP.NET MVC 2 - PullRequest
4 голосов
/ 21 июля 2010

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

Спасибо,

Кирон

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Объект xmlhttp будет автоматически следовать ответу 302, вы можете проверить это с помощью firebug / fiddler, ваш первый ответ будет перенаправлением 302, а xmlhttp немедленно запросит местоположение, содержащееся в ответе 302, в результате чего ваша страница входа будетответил.

Существует несколько способов избежать описанного выше сценария.

1) Добавьте мета-тег обновления, который переводит пользователя в метод действия выхода из системы и перенаправляет его на страницу входа.за несколько секунд до истечения времени сеанса (лучший вариант для безопасности imo)

2) За минуту до истечения времени ожидания пользователю показывается диалоговое окно, в котором сообщается, что он собирается выйти из системы.Если в течение минуты они нажимают «оставаться в системе», сделайте быстрый вызов Ajax, который сохранит действительность сеанса в течение следующих x минут, если пользователь не ответит, просто отправьте клиентское перенаправление на ваше действие выхода.

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

2 голосов
/ 21 июля 2010

Вы можете создать новый атрибут, аналогичный решению, данному этому вопросу @Craig Stuntz. Делая ваш Ajax-запрос, вы можете передать следующую функцию, где вы можете отобразить какой-то пользовательский диалог, если время сеанса пользователя истекло:

    function OnAjaxError(context) {
        if (context._response.get_statusCode() == '403') {
            // Show a dialog telling the user they have been logged out
        }
        else {
            // Show a dialog telling the user there has been an error
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...