1

1つのアプリケーション。ajaxを使用してログインし、ユーザーを認証しています。私が抱えている問題は、cakephp2.1authコンポーネントにあります。ユーザーに手動でログインすると、コンポーネントはリダイレクトされますが、これは発生したくないので、成功コードをajaxリクエストに返します。このデフォルトの動作を防ぐ方法はありますか?

4

1 に答える 1

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);
    }
于 2013-02-21T08:59:09.423 に答える