所以我正在开发一个基于ajax的应用程序。当会话超时时,用户在ajax中被重定向到users/login…我想让用户完全重定向到一个不同的布局。
我尝试了以下所有方法,但都不起作用…
return $this->redirect(array('ajax' => false, 'controller'=>'users','action'=>'login'));
$this->Auth->logoutRedirect = '/';
我甚至设置了$this->autoRender = false;
,但是都不工作。
我现在在我的AppController中有这个
if( $this->Auth->loggedIn() !== true && $this->params['action'] !== 'login'){
$this->autoRender = false;
return $this->redirect('/');
}
您需要做的是向客户端呈现正确的响应,而不是重定向AJAX请求。
仅重定向当前AJAX请求不会阻止客户端执行更多请求。而不是重定向它,您应该—仅对于AJAX请求—返回一个客户端知道将其解释为签出的值。
如果你直接将AJAX请求加载到一个div中(为了包含到dom树中),你可以简单地返回一个javascript,它会重定向用户:
<script> window.location = "<signout/signin>.php" </script>