cakephp1.2で特定のURL領域(admin)に制限を掛ける

この機能を使って,下記のことを実現できます。

  • 普段のアクセスURL:
http://hoge.jp/controller_name/action_name
  • 設定すると:
http://hoge.jp/特定の領域名/controller_name/特定の領域名_action_name

結果的に.htaccessで特定の領域にアクセスする場合のBasic認証などが実現できます。

Step1 特定の領域名を決める(例:admin)

	Configure::write('Routing.admin', 'admin');

Step2 領域内保護されるアクションを書く

  • 'admin' なのでcontroller内のアクション名をadmin_index()にします。
class HogeController extends AppController 
{
    var $name = "Hoge";
    var $uses = array();

	function admin_index(){
	    #処理をここに書く
        
	}

}
  • アクセスURLは下記になります
http://hoge.jp/admin/hoge/index
注意:http://hoge.jp/admin/hoge/admin_index <== こちらはエラーになります。

Step3 特定の領域内に特定のlayoutにするとか

  • app/app_controller.phpを開き下記を追加する
function beforeFilter(){
	    
	    if (Configure::read("Routing.admin") && !empty($this->params[Configure::read("Routing.admin")])) {
            // 管理者用のレイアウトを指定
            $this->layout = "admin";
        }
	}

Step4 .htaccessで制限を設ける


AuthUserFile /path_to_htpasswd/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

これで、設定完了です〜