2

私はzendフレームワークを使用しています。私のサイトには、guestとloggeduserの2種類のユーザーがいます。また、と呼ばれるコントローラーがあります。本、そこに私は3つのアクションがあります。追加、編集、削除、

私のzendaclでは、ログに記録されたユーザーにのみブックコントローラーにアクセス許可を与えます。ナビゲーションでは、ブックのリンクはゲストに表示されません。代わりに、ログに記録されたユーザーに3つのサブリンクをすべて表示し、ゲストにサブリンクのみを追加します。

このような

ログに記録されたユーザーへ

    • 追加

    • 編集

    • 消去

とゲストに

    • 追加

問題は、aclで権限を設定すると、書籍のリンクがゲストに完全に表示されないことです。

私のACLのこの部分

    $this->addResource(new Zend_Acl_Resource('books'));
    $this->addResource(new Zend_Acl_Resource('login'));
    $this->addResource(new Zend_Acl_Resource('logout'));        

    $this->addRole(new Zend_Acl_Role('guest'));
    $this->addRole(new Zend_Acl_Role('user'), 'guest');

    $this->allow('guest', 'login');
$this->allow('user','logout');
    $this->allow('user','books');

$this->deny('guest', 'logout');
$this->deny('user', 'login');   

アクションレベルに権限を設定する方法はありますか、またはプラグインが必要です。私は何時間も解決策を見つけるために一生懸命努力しましたが、できませんでした。助けてください...............ありがとう:(

アップデート 。

名前に惑わされないでください。これはデフォルトのzendAcl.phpではありません。これは私のモデルフォルダにとどまるカスタムのものです

私のnavigation.xmlの一部

<configdata>
    <nav>
        <books>
           <label>Books</label>
           <controller>books</controller>
           <action>index</action>
           <resource>books</resource>
           <pages>
                    <add>
                        <label>Add</label>
                        <controller>books</controller>
                        <action>add</action>
                    </add>
                    <edit>
                        <label>Edit</label>
                        <controller>books</controller>
                        <action>edit</action>
                    </edit>
                    <delete>
                        <label>Delete</label>
                        <controller>books</controller>
                        <action>delete</action>
                    </delete>
          </pages>
       </books>
   </nav>
</configdata>
4

2 に答える 2

3

すでに述べたように、リソースに特権を追加する必要があります。$this->allow('role','resource',array('privilege'));多くの人がcontrollerをリソースおよびaction特権として使用します。

サインオンしたユーザーに適切なナビゲーションを表示するためZend_Navigationにと組み合わせて使用​​していると想定しています。Zend_Acl表示されない単純な理由は、親を表示する許可を与えbookspagesいないためです。に定義されているのと同じリソースと特権へのアクセスを許可する必要があります。したがって、次のようなことを行う必要があります。guestbooksguestbooks

$this->allow('guest', 'books', array('index', 'add')

次に、userアクセスを許可できます。

$this->allow('user', 'books', array('edit','delete')); // index & add are inherited 

ここで、Zend_Navigation_Pageリソースをとして設定しbooks、特権をに設定する必要がありますindex

于 2011-07-15T14:26:42.063 に答える
1
$this->deny($this->editor,'artist',array('delete'));

ここで、artistはリソース(コントローラー)であり、deleteはアクションです。

例については、 http://zendguru.wordpress.com/2008/11/05/zend-framework-acl-with-example/を参照してください。

および/またはhttp://framework.zend.com/manual/en/zend.acl.refining.html#zend.acl.refining.precise

于 2011-07-15T12:50:24.370 に答える