CakePHP 2 AJAX перенаправления - PullRequest
1 голос
/ 23 ноября 2011

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

Можно ли переопределить метод 'redirect' в AppController для визуализации правильного действия, когда перенаправление происходит в вызове AJAX?

Спасибо, Себастьян

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

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

Обновление

В случае, если вы хотите, чтобы пользователь вошел в систему, вам просто нужно поставить проверку / cookie для входа во что-то вроде вашего AppController::beforeFilter(), который запускается при каждом запросе. например:

public function beforeFilter() {
     if($this->Auth->user() {
          // USer is logged in, it's all gravy
     } else {
         // User is not logged in, try to log them in
         $userData = $this->Cookie->read('User');
     if(!empty($userData)) {
              // Function that grabs info from cookie and logs in user
         }
     }
}

Таким образом, перенаправление не будет выполняться, поскольку пользователь будет входить в систему, пока у него есть файл cookie.

1 голос
/ 24 ноября 2011

Другой подход заключается в том, чтобы предоставить каждому доступ к функции Ajax:

public function beforeFilter() {
  $this->Auth->allow(array('my_ajax_method'));
}

, а затем проверить, что пользователь аутентифицирован в самом методе:проверьте результат вызова ajax в вашем javascript и действуйте соответственно.

...