CakePHP 1.3.x のACLサンプルプログラム

結論から書くと、勉強用や参考になるかなと思い、
CakePHPのACLサンプルプログラムを
ダウンロードできるようにgithubへアップしました。

I uploaded to GitHub CakePHP ACL sample programs
for study.

■GitHubサンプルプログラム(GitHub sample programs)
  256hax/CakePHP-1.3.x-ACL-samples - GitHub

アクセスしたら左上の [ZIP] ボタンを押して
ダウンロードできます。
そのあと、同じページに「README」が
書いてありますので、それをご参照ください。

■経緯
CakePHPのACLをチュートリアルをもとに
実装していたが、ややこしいうえに自分のやり方が
悪いのか、ちゃんと動作しなかった。
幸いにもエンジニアの人が解説したブログが
たくさんあったので、なんとか動くようになった。
ただ、意外にも「ダウンロードしてすぐ動かせる」
っていうファイル群が見つからなかったので、
ACLのサンプルプログラムを丸ごとアップしてみようと思う。

■参考サイト
 ACL を制御するシンプルなアプリケーション :: 開発例 :: マニュアル :: 1.3コレクション
 CakePHP ACL - アクセス制御リストを攻略する | hijiriworld Web Creators
 CakePHP - ACLの権限管理を超簡単にするプラグイン『Plugin ACL』 - 高橋です
 cakePHP チュートリアル「ACL を制御するシンプルなアプリケーション」 その1 - SystemGathering
 CakePHP - Auth component loop redirect 

■リダイレクト無限ループについて
 CakePHP 1.3.x のACLチュートリアルを実装後、
 UsersControllerの「$this->Auth->allow('*');」を
 外すと、どのページにアクセスしても
 リダイレクトループ(ページ転送がループ)してしまい
 ダメだった。結局、下記のようにし、あとは
 パーミッションで対応(但し、下記方法が合ってるか不明)。

function beforeFilter() {
parent::beforeFilter();
//$this->Auth->allow('*'); 
if(isset($this->params['requested'])) {
$this->Auth->allow($this->action);
}
}
 
 

 あと、CakePHPチュートリアルの パーミッションの手動設定
 追加のみ実行可能で、変更はできないようで、
 色々いじったところ、混乱してハマった。

 なので、 ACL Plugin を使ったほうが確実。