Я думаю, что вам лучше всего будет установить вам АЯКС позвонить правильно реагировать на недопустимый ответ. Поскольку это, кажется, важная часть вашего приложения, я бы передал переменную loggedin с каждым запросом ajax, поэтому клиент может сказать, как только пользователь будет выведен из системы.
Update
В случае, если вы хотите сохранить пользователь вошел в системе, вы просто должны поставить вошедшими в/проверке печенья в чем-то, как ваш 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. Я хочу, чтобы при вызове AJAX CakePHP проверял, зарегистрирован ли пользователь и автоматически подключается, если нет. –
@ Sébastien см. Мое обновление. – Dunhamzzz
Хорошо, спасибо за это. Но знайте, что если «незарегистрированный пользователь» находится на общедоступной странице и запускает событие AJAX, для которого требуется вход в систему, в этом методе будет перенаправление на страницу loggin (для вызова без аякса). Таким образом, возврат AJAX будет пустым (без ошибок); как не разбить метод и сделать «псевдо-перенаправление», чтобы страница входа в систему была возвращена на вызов AJAX? –