CakePHP アプリで頻繁に Jquery Ajax 呼び出し (ポスト、ロード) を行いました。通常、コンテンツは div にロードされ、コンテンツはログインしているユーザーに関連付けられます。
デフォルトのフォーム認証を使用し、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'));
}
ユーザー識別に間違ったロジックを使用している可能性がありますか?