使用ajax时,防止cakePHP 2.1 auth组件重定向

时间:2013-01-17 18:26:35

标签: cakephp-2.1

1个申请。我正在使用ajax登录并验证用户身份。我遇到的问题是使用cakephp 2.1 auth组件。当我手动登录用户时,组件重定向,我不想发生,而是将成功代码返回给我的ajax请求。 有没有办法防止这种默认行为?

1 个答案:

答案 0 :(得分:2)

AuthComponent正在调用Controller :: redirect(null,403)。您可以通过覆盖AppController中的redirect()来捕获这些:

/**
 * Proxy for Controller::redirect() to handle AJAX redirects
 *
 * @param string $url 
 * @param int $status 
 * @param bool $exit 
 * @return void
 */
    public function redirect($url, $status = null, $exit = true) {
        // this statement catches not authenticated or not authorized ajax requests
        // AuthComponent will call Controller::redirect(null, 403) in those cases.
        // with this we're making sure that we return valid JSON responses in all cases
        if($this->request->is('ajax') && $url == null && $status == 403) {
            $this->response = new CakeResponse(array('code' => 'code'));
            $this->response->send();
            return $this->_stop();
        }
        return parent::redirect($url, $status, $exit);
    }