我使用我的 CakePHP 应用程序进行了频繁的 Jquery Ajax 调用(发布、加载)。正常加载内容到div中,内容与登录的用户相关。
我使用默认的 Form 身份验证,并在 AppController 中定义登录用户:
$this->aU = $this->User->findById($this->Auth->user('id'));
在此之后,我通常在带有 $this->aU 的控制器中使用登录用户,并且它在普通视图渲染中工作正常。但是当我使用 ajax 和 setinterval 渲染视图时,20 次中有 1 次调用丢失了会话并且控制器重定向了请求,因为看不到登录的用户。
var interval = setInterval(function() {
$('#alerts').load('<?php echo $this->Html->url('/users/alerts'); ?>');
}, 20000);
在 UsersController 警报操作中,我使用这个:
public function alerts() {
$this->layout = 'ajax';
$user = $this->aU;
$this->loadModel('Message');
$unread_messages = $this->Message->find('count', array(
'conditions' => array('receiver_user_id' => $user['User']['id'])
));
$this->set(compact('user', 'unread_messages'));
}
也许我在用户识别中使用了错误的逻辑?