2

私が持っている CakePHP アプリに ACL を実装していますが、ACO の設定に苦労しているようです。私は単純な ACL 制御アプリケーションのチュートリアルに従っており、 aros、acos、 aros_acos テーブルを適切にセットアップしました。

今、私は ACO を設定しなければならない部分にいます。正直なところ、少し迷っています。このチュートリアルでは、コンソール プラグインを使用して ACO を登録します。ただし、このNet Tutsは次を使用して手動で追加します。

$aco = new Aco();  
$aco->create();  
$aco->save(array(  
    'model' => 'User',  
    'foreign_key' => null,  
    'parent_id' => null,  
    'alias' => 'User'  
));  
$aco->create();  
$aco->save(array(  
   'model' => 'Post',  
   'foreign_key' => null,  
   'parent_id' => null,  
   'alias' => 'Post'  
)); 

この手動コードを使用して、User コントローラーと Post コントローラー全体の ACO を作成しています。わかりました。ユーザーコントローラーの編集アクションなどのためにACO をセットアップしたい場合はどうすればよいでしょうか? その構文はどのように見えますか?

表示されているプラ​​グインを使用するよりも、コントローラーの install_aco() 関数内でこのようにコーディングした方がよいと思います。

または... ACLをまったく使用せずに、Authを使用してコントローラー/アクションへのアクセスを制御することはできませんか? たとえば、ユーザー テーブルに「ロール」フィールドを追加し、コントローラの beforeFilter() でロールを確認して、正しいロール/権限がない場合はユーザーをリダイレクトできます。これのマイナス面は何ですか?

とにかく、ここでの助けに本当に感謝しています。読んでくれてありがとう。

4

1 に答える 1

0

次のプラグインにより、ACLをCakePHPアプリケーションに実装するのが非常に簡単になりました。

http://www.alaxos.net/blaxos/pages/view/plugin_acl_2.0

これは、前述のようにアクセス許可を設定する(ユーザーコントローラーのアクションを編集する)だけでなく、アプリケーション全体で見つかったすべてのACOに非常に優れたインターフェイスを提供します。

また、非ACLアプローチを採用することについても言及しましたが、提案する内容は問題なく機能するはずです。CakePHPサイトのこのページをチェックしてください。isAuthorized()の部分に注意してください。

http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

私は個人的に両方の方法を使用しましたが、ACL(上記のプラグインを使用)の方が管理しやすいことがわかりました。

于 2013-02-21T18:22:29.233 に答える