所以我正在开发一个基于ajax的应用程序。当会话超时时,用户被重定向到ajax本身的users / login ...我希望用户完全重定向到不同的布局。
我已经尝试了以下所有内容,但没有一个有效......
return $this->redirect(array('ajax' => false, 'controller'=>'users','action'=>'login'));
$this->Auth->logoutRedirect = '/';
我甚至设置了$this->autoRender = false;
,但都没有。
在会话超时时将用户重定向到ajax的最佳方法是什么?
我目前在AppController中有这个。
if( $this->Auth->loggedIn() !== true && $this->params['action'] !== 'login'){
$this->autoRender = false;
return $this->redirect('/');
}
答案 0 :(得分:0)
您需要做的是向客户端呈现正确的响应,而不是重定向AJAX请求。
仅重定向当前的AJAX请求不会阻止客户端执行更多请求。 您应该 - 仅针对AJAX请求 - 返回客户端知道将其解释为注销的值,而不是重定向它。
如果您将AJAX请求直接加载到div中(包含在dom树中),您只需返回一个重定向用户的javascript:
<script> window.location = "<signout/signin>.php" </script>