CakePHP/ACLの基本的な要件実装
CakePHP3.5に「cakephp/acl」をいれてACLかけてみてる。
挙動の要件としては
・「認証が必要な領域」があって、そこに未認証の状態でログインしたらログイン画面に飛ばして欲しい。
・認証済みでも、アクセス権限がないユーザーでアクセスしたら「アクセス権限ないよ」って出したい。
っていう、いたって普通の要件。
AppControllerのinitializeでAuthコンポーネントをロードするときに、設定すればいいだけだよねー。ってことでやってみた。
public function initialize(){
parent::initialize();
$this->loadComponent('Acl.Acl');
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authorize' => ['Acl.Actions' => ['actionPath' => 'controllers/']],
'loginAction' => ['plugin' => false,'controller' => 'Users','action' => 'login'],
'loginRedirect' => ['plugin' => false,'controller' => 'XXXX','action' => 'index'],
'logoutRedirect' => ['plugin' => false,'controller' => 'Users','action' => 'login'],
'authError' => 'アクセス権限ありません!',
'flash' => ['element' => 'error']
]);
}
当初は、未認証状態だと、ログインにとばしてやればいいのかな、と以下の記述もいれてたんだけど
'unauthorizedRedirect' => ['controller' => 'Users','action' => 'login','prefix' => false],
でも、
'loginAction' => ['plugin' => false,'controller' => 'Users','action' => 'login'],
の記載があれば、認証が必要な領域に入ったけど、未認証だとログインに飛ばされるので、いらないことに気づいた。