Проблема JSON / AJAX, когда время сеанса сервера истекло - PullRequest
0 голосов
/ 08 апреля 2011

Я делаю вызовы ajax и json на моем сайте, время ожидания сеанса которого составляет 120 минут на стороне сервера.После того, как время истекло, и пользователь пытается сделать вызов ajax или json со страницы, которая была загружена, вызов сделан, я просто сижу там без ответа.Я использую файл sturts.xml для обработки всех моих вызовов action / url, и у этого файла есть перехватчик, который запускается при каждом обращении к серверу.Перехватчик проверяет, вошли ли вы в систему, и отправляет вас на экран входа в систему, если это не так.Проблема в том, что вызовы ajax и json будут настроены, как показано ниже:

* Мне пришлось заменить все теги "<" и ">" на "(" и ")", так как редактор не будет показыватьих, поэтому просто замените скобки на «>» и «<» </p>

(action name = "someAction" class = "ActionClass" method = "someMethod") (result name = "success" type = "json") (имя параметра =" цель ") результат (/ param) (имя параметра =" шаблоны ") - *. class (/ param) (/ result) (/ action)

Глобальный результатон будет вызван, когда перехватчик захочет отправить вас на страницу входа, как указано ниже:

(имя результата = "логин" тип = "плитки") site.login (/ результат)

так как перехватчик отправляет обратно результат «входа в систему», а не «успеха», вызовы ajax и json никогда не получают ожидаемого результата, и когда я смотрю на ответы, браузер получает это необработанный HTML-код страницы, которой я являюсьожидая перенаправления на.Любой другой тип вызова сервера работает и отправляет вас на экран входа в систему, если время сеанса истекло.Если я попытаюсь сделать экшн-вызов как обычный linin, он будет работать, но я не могу сделать ajax или json-вызовы и заставить его работать.Есть предложения?

1 Ответ

0 голосов
/ 08 апреля 2011

Это, вероятно, немного хакерски, но вот что я делаю в php (не знаю, на каком языке вы работаете):

if ($is_ajax_request && $not_logged_in)
{
    exit('<script>top.location="/your_login_uri";</script>');
}

Вызов ajax возвращает тег script, который будет перенаправлять текущийстраницу к вашей странице входа.Еще раз не уверен, что вы используете его, но вы можете обнаружить ajax-запросы с php .Вероятно, это не лучший способ сделать это, но я использую его в течение года или около того, и он работает идеально каждый раз.Надеюсь, это даст вам хотя бы некоторые идеи.

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

...