0

Zend_Aclを回避しようとしていますが、これまでのところ成功していません。私は本当に立ち往生しているので助けが必要です。私の状況はこれです:

私は2つのモジュールを持っています

  • メンバー
  • 管理者

と2つの役割

  • メンバー
  • 管理者

メンバーと管理者の両方の役割のメンバーモジュールにアクセスするログインを使用してZend_Authを設定しました。どちらもここでいくつかのことを行うことができますが、管理者の役割は、より多くの管理者のことを行うことができる「administrators」モジュールにアクセスすることもできます。

次のようにAclを設定します。

$acl = new Zend_Acl();

$acl->addRole(new Zend_Acl_Role('member'));
$acl->addRole(new Zend_Acl_Role('admin'), 'member');

$acl->add(new Zend_Acl_Resource('members'));
$acl->add(new Zend_Acl_Resource('administrators'), 'members');

$acl->allow('member', 'members'); 
$acl->allow('admin',  'administrators');


$registry = Zend_Registry::getInstance();
$registry->set('acl', $acl);

このファイルを保存し、index.phpページで呼び出しています。

私がこれまでにしたことが正しいと仮定すると、私の問題は次に何をするかです。私がAclを扱うのは初めてであり、正直なところ、すべての思考が機能することについて少し混乱しています。手伝ってもらえますか?よろしくお願いします。

4

1 に答える 1

3

ACLオブジェクトを作成しました。現在のユーザーがリソースの1つにアクセスできるかどうかを確認する必要があるたびに、今すぐ使用する必要があります。

これを行うには、レジストリからACLオブジェクトを取得する必要があります。

$acl = Zend_Registry::get('acl');

そしてそれをクエリします:

if ($acl->isAllowed($yourUser, 'members')) {
  // Do the job
} else {
  // some message or redirection
}

詳細については、 Zend_Aclのドキュメントをご覧ください。

お役に立てば幸いです。

于 2011-11-07T12:55:57.880 に答える