2012-04-16 14 views
4

私はCakePHPフレームワークの初心者です。私はCakePHPについて十分な知識がありません。だから私の質問です:ACLは自動的に動作するか、手動でチェックする必要がありますか?CakePHP Acl自動チェック

答えて

5

との私の経験、私はACLと私の最新のCakePHP 1.3プロジェクトのAppControllerの中にこれを持って、CakePHPの2.1でかなり類似しているべきです。

function beforeFilter() { 
    // ACL Check 
    if($this->name != 'Pages' && !$this->Acl->check(array('model' => 'User', 'foreign_key' => $this->Session->read('Auth.User.id')), $this->name . '/' . $this->params['action'])) { 
     CakeLog::write('auth', 'ACL DENY: ' . $this->Session->read('Auth.User.name') . ' tried to access ' . $this->name . '/' . $this->params['action'] . '.'); 
     $this->render('/pages/forbidden'); 
     exit; // Make sure we halt here, otherwise the forbidden message is just shown above the content. 
    } 
} 

別に「ページ」のコントローラから、すべてのコントローラ/アクションはACL-チェックされ、ユーザーがアクセスできない場合は、「ページ/禁断の」ビューが代わりに提供され、ログエントリが認証に書かれています.logファイルもあります(オプションですが、私はこれを当時好みました)。

2

正しく設定した場合、AclComponentはユーザーがアクションにアクセスできるかどうかを自動的にチェックします。

出典:CakePHPの1.3

+0

私はCakePHP 2.1で作業していますが、自動的には動作しません。しかし、 '$ this-> Acl-> check()'は正しい結果を返しました。 – Codegiant