9

bjyoungblood/bjy-authorizeモジュールをセットアップしましたが、現在、ルート403で構成されているものを除く各 URL に対して「アクセスが拒否されました」というエラーが発生しています。home

module.byjauthorize.global.phpは次のように見えます:

'bjyauthorize' => array(
    'guards' => array(
        'BjyAuthorize\Guard\Controller' => array(
            array('controller' => 'index', 'action' => 'index', 'roles' => array('guest','user')),
            array('controller' => 'index', 'action' => 'stuff', 'roles' => array('user')),
            array('controller' => 'zfcuser', 'roles' => array()),
            //backend
            array('controller' => 'Application\Controller\Index', 'roles' => array('admin')),
            array('controller' => 'MyModule\MyEntity\MyEntity', 'roles' => array('admin')),

        ),

        'BjyAuthorize\Guard\Route' => array(
            array('route' => 'zfcuser', 'roles' => array('user')),
            array('route' => 'zfcuser/logout', 'roles' => array('user')),
            array('route' => 'zfcuser/login', 'roles' => array('guest')),
            array('route' => 'zfcuser/register', 'roles' => array('guest')),                
            array('route' => 'home', 'roles' => array('admin')),
            array('route' => 'my-entity', 'roles' => array('admin')),
        ),
    ),
),

BjyAuthorize\Guard\Routeその部分を削除しようとしましたが、効果がありませんでした。ルートを削除するとhome、ホームページもブロックされます。したがって、Controller-Guard と Route-Guard の両方が機能しているようです。この動作をデバッグするにはどうすればよいですか?

4

4 に答える 4

5

アレイに1 つのエントリを作成したらすぐに、'BjyAuthorize\Guard\Controller'適切な権限を持つすべてのコントローラのエントリを作成する必要があります。

私はこれを持っています:

'BjyAuthorize\Guard\Controller' => array(
    // Access for everyone
    array('controller' => 'zfcuser', 'roles' => array('guest')),
    array('controller' => 'Application\Controller\Index', 'action' => 'index', 'roles' => array('guest')),
    array('controller' => 'error', 'roles' => array('guest')),

    // Restricted
    array('controller' => 'User\Controller\AdminUser', 'roles' => array('admin')),

),

zfuser (ログイン用) とエラー (それ以外の場合はデバッグが困難) へのゲスト アクセスを許可することが重要です。

コントローラーとルートガードを同時に使用しようとしたことはありません。

于 2013-03-12T08:41:02.910 に答える
1

まったく同じ問題がありました。

問題は、BjyAuthorize が十分に文書化されていないことだと思います。そのため、私たちの多くは、提供されたファイルを単にコピーして貼り付け、作業を行っています。たとえば、次から:

'BjyAuthorize\Guard\Controller' => array(
            array('controller' => 'zfcuser', 'roles' => array()),
        ),

コントローラーを次のように追加することが期待されます。

array('controller' => 'controllername', 'role' => array()),

ただし、フルパスを追加する必要があります。そうしないと機能しません。

array('controller' => 'Folder/Controller/Action', 'role' => array()),

私はこれに完全に困惑していたので、これで誰かが数時間の作業を節約できることを願っています!

于 2014-04-24T19:15:26.863 に答える
0

これにより、module.php でコードをデバッグします

public function onBootstrap($e)
    {   echo "<pre>";
        var_dump($e->getTarget()->getServiceManager()->get('BjyAuthorize\Provider\Identity\ProviderInterface'));
    }
于 2015-05-03T09:36:05.503 に答える