0

所以我正在开发一个基于 ajax 的应用程序。当会话超时时,用户被重定向到 ajax 本身的用户/登录...我想让用户完全重定向到不同的布局。

我已经尝试了以下所有方法,它们都不起作用......

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('/');
    }
4

1 回答 1

0

您需要做的是向客户端呈现正确的响应,而不是重定向 AJAX 请求。

仅重定向当前的 AJAX 请求不会阻止客户端执行更多请求。而不是重定向它,您应该 - 仅适用于 AJAX 请求 - 返回一个客户端知道解释为注销的值。

如果您将 AJAX 请求直接加载到 div 中(以包含在 dom 树中),您可以简单地返回一个重定向用户的 javascript:

<script> window.location = "<signout/signin>.php" </script>
于 2013-04-20T08:02:10.810 回答