2011-02-01 4 views
0

私は、www.cakephp.orgウェブサイトのaclチュートリアルに従ってセキュリティを実装しました。私は、ログインしていないユーザーをログインページにリダイレクトするコード行を特定しようとしています。テストとして、app_controller.phpのbeforefilter()関数からいくつかの行をコメントアウトしました。ログインページへのリダイレクトを行っている行を特定しようとしています

function beforeFilter() { 
     //Configure AuthComponent 
     $this->Auth->authorize = 'actions'; 
     $this->Auth->actionPath = 'controllers/'; 




    // $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    // $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 

     // $this->Auth->loginRedirect = array('controller' => 'alerts', 'action' => 'home'); 
     // $this->Auth->loginRedirect = array('controller' => 'schedules', 'action' => 'index'); 
     $this->Auth->allowedActions = array('display'); 


    } 

しかし、まだログインページにリダイレクトされています。

cakephpサイトがプロキシサーバー経由で提供されているため、相対URL参照を使用する必要がありますが、ログインリダイレクトは絶対参照を使用しているためです。

+0

私は最初に何かを出力しようとしました。リダイレクトは "ヘッダを送信できません、既に出力が開始されました"というエラーを引き起こします(Cakeが出力バッファを使用しているかどうか、おそらくヘッダーを送信していますか?)。 – Kemo

答えて

1

実際のリダイレクトはAuthComponent :: startup()で行われます。 AuthComponent :: isAuthorized()が呼び出され、(Aclが設定されている)あなたのケースでは、Aclが検査を行うために使用されます。

beforeFilter()の設定を変更しても、動作に影響はありません。おそらくよりも、あなたはACL - >チェックを()失敗していると、ライン450

こちらを参照してくださいにリダイレクトされる - https://github.com/cakephp/cakephp/blob/master/cake/libs/controller/components/auth.php#L309、およびhttps://github.com/cakephp/cakephp/blob/master/cake/libs/controller/components/auth.php#L450

をごリダイレクト関連の問題に対処するには、おそらくヘルパーをオーバーライドを見て:: url()。 app/app_helper.phpを作成し、ヘルパーを拡張するクラスAppHelperを定義し、urlメソッドを提供します。渡された引数を調べ、適切なURLを返します。

関連する問題