Zend_Aclは認可を扱うクラスです。
Zend_Authの認証とどう違うの?というと、認証はログインできるかどうかの判断、すなわち本人確認を行います。
それに対して認可は認証した後のアクセス権限を意味します。
ブログシステムがあったとして、Zend_Authは管理画面にログインできるかどうかをチェックします。
Zend_Aclは、私は自分のブログを編集できますが他人のブログは編集できず、管理者は誰のブログでも編集できる、といったログイン後に必要となる権限を操作します。
そういった立場上Zend_Authと同時に使用するべきなのですが、まあ今回はとりあえず単品で使ってみます。
リファレンスガイドではのっけからロールの多重継承とか複数のロールに属するとか面倒な解説がなされていますが、いきなりそんなことやったって理解できるわけなかろうがと。
ということでまずは単純な例を作ってみます。
上記では、memberロールを持つユーザはサーバ管理者にしか許されない操作は行えませんが、サーバ管理者はブログ管理者が行える操作は全て行える、という設定になります。
とても簡単に認可制御が行えました。
あとは各ユーザ毎にmemberかadminかを示すフラグを設定すれば完成、めでたしめでたし。
Zend_Authの認証とどう違うの?というと、認証はログインできるかどうかの判断、すなわち本人確認を行います。
それに対して認可は認証した後のアクセス権限を意味します。
ブログシステムがあったとして、Zend_Authは管理画面にログインできるかどうかをチェックします。
Zend_Aclは、私は自分のブログを編集できますが他人のブログは編集できず、管理者は誰のブログでも編集できる、といったログイン後に必要となる権限を操作します。
そういった立場上Zend_Authと同時に使用するべきなのですが、まあ今回はとりあえず単品で使ってみます。
リファレンスガイドではのっけからロールの多重継承とか複数のロールに属するとか面倒な解説がなされていますが、いきなりそんなことやったって理解できるわけなかろうがと。
ということでまずは単純な例を作ってみます。
<?php //Zend_Acl require_once('Zend/Acl.php'); $acl = new Zend_Acl(); //ロールを作成 $acl->addRole(new Zend_Acl_Role('admin')) ->addRole(new Zend_Acl_Role('member')); //リソースを作成 $resourceAdmin = new Zend_Acl_Resource('adminResource'); $resourceMember = new Zend_Acl_Resource('memberResource'); //Aclにリソースを付与 $acl->add($resourceAdmin); $acl->add($resourceMember); //ロールに、リソースに対する権限を付与 $acl->allow('admin', 'adminResource'); $acl->deny ('member','adminResource'); $acl->allow('admin', 'memberResource'); $acl->allow('member','memberResource'); //権限があるかチェック var_dump($acl->isAllowed('admin', 'memberResource')); //true var_dump($acl->isAllowed('member','adminResource')); //falsememberはブログ管理者つまり私、adminはサーバ管理者つまり忍者ブログの中の人を想定しています。
上記では、memberロールを持つユーザはサーバ管理者にしか許されない操作は行えませんが、サーバ管理者はブログ管理者が行える操作は全て行える、という設定になります。
とても簡単に認可制御が行えました。
あとは各ユーザ毎にmemberかadminかを示すフラグを設定すれば完成、めでたしめでたし。
PR
トラックバック
トラックバックURL: