Можно ли выполнить пользовательский код в каждом Ajax-запросе, не добавляя этот код вручную в каждый Ajax-код в Ext Js? - PullRequest
0 голосов
/ 13 апреля 2011

Если пользователь вошел в систему, то запросы ajax работают нормально. Когда сеанс признан недействительным, ajax возвращает экран входа в систему, и пользователь может видеть экраны входа в систему в качестве содержимого Ajax. Можно ли добавить пользовательский код в Ext Js, который будет запускаться при каждом запросе ajax, чтобы проверить, является ли сеанс все еще действительным, если сеанс недопустим, тогда JavaScript перенаправит на страницу входа, в противном случае он продолжит выполнение запроса Ajax в обычном режиме.

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

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

Ваш код на стороне сервера должен будет возвращать HTTP 403 или аналогичный, если пользователь не авторизован.Поместите это где-то (только один раз) в коде вашего кода:

Ext.Ajax.on('requestexception', function(conn, response, options) {
    if (response.status == 403) {
       Ext.MessageBox.alert('Authentication', 'You are not logged in.');
       /* you can display a login box or something here */
    }
};

Если запрос AJAX не выполняется из-за истечения сеанса, вы можете изящно обработать его в своем коде.

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

1 голос
/ 13 апреля 2011

Проверка того, что сеанс все еще действителен , следует сделать на сервере.Не в JavaScript.

Мы не доверяем клиентам.

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

Вы можете изменить процесс ajax двумя способами:

1- конец сервера: при получении запроса проверьте сеанс - если пользователь не вошел в систему или сеанс истек, вернуть HHTP 403 (= не авторизован),2- конец клиента: как часть вашего обработчика ответов ajax, проверьте на наличие ошибки 403. Если она возвращается, запросите логин и отправьте его на сервер, затем, когда вход был успешным, повторно отправьте оригинальный запрос.

Этолегко, если вы не используете слишком много готовых библиотек ajax.Если вы, посмотрите на его функциональность.

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