1

何らかの理由で、ZfcRbac が私の ID ロールを認識しません。私は何時間も使用してきましたが、ID からロールを取得できないようです。これは、認証サービスから間違いなく要求される可能性があるため、奇妙です。

\Zend\Debug\Debug::dump($authService->getIdentity());

上記のダンプは次のとおりです。

object(Application\Entity\User)#405 (7) {
  ["role":protected] => object(Application\Role\Role)#448 (4) {
    ["id":protected] => string(1) "1"
    ["children":protected] => array(0) {
    }
    ["name":protected] => string(5) "guest"
    ["permissions":protected] => array(0) {
    }
  }
  ["id":protected] => int(1)
  ["username":protected] => NULL
  ["email":protected] => string(35) "hetmfdm_huisky_1437140010@tfbnw.net"
  ["displayName":protected] => string(0) ""
  ["password":protected] => string(19) "facebookToLocalUser"
  ["state":protected] => NULL
}

これが確かに同じ認証サービスであることを確認します: zfc_rbac.global.php

    /**
     * Key that is used to fetch the identity provider
     *
     * Please note that when an identity is found, it MUST implements thhe ZfcRbac\Identity\IdentityProviderInterface
     * interface, otherwise it will throw an exception.
     */
    'identity_provider' => 'zfcuser_auth_service',

module.config.php

    'factories' => [
        'zfcuser_auth_service' => function ($sm) {
            return new \Application\Authentication\AuthenticationService(
                $sm->get('ZfcUser\Authentication\Storage\Db'),
                $sm->get('ZfcUser\Authentication\Adapter\AdapterChain')
            );
        },
    ],
    'aliases' => [
        'Zend\Authentication\AuthenticationService' => 'zfcuser_auth_service',
    ]

コントローラーで

$authService = $this->zfcUserAuthentication()->getAuthService();

戻り値

string(48) "Application\Authentication\AuthenticationService"

Application\Authentication\AuthenticationService は Zend 認証サービスの拡張にすぎず、IdentityProviderInterface を実装しています。これは必要ないことはわかっていますが、念のため試してみました。

namespace Application\Authentication;

class AuthenticationService extends \Zend\Authentication\AuthenticationService implements IdentityProviderInterface
{
}

今のところ大丈夫です(と思います)。

OK 画像を投稿しようとしましたが、私の評判にはその可能性がありません。したがって、Zend Devveloper Toolbar の右端のタブに、RoleProvider によって提供されたすべてのロールが表示されることを確認します。しかし、一番左の ID ロールはまだゲストです。これは明らかに間違っており、そのために何も機能しません。

私は本当にここで立ち往生しており、RBAC が本来の機能を果たすまであと少ししか離れていないように感じるので、これは厄介なブロックです。

追加情報: Doctrine は使用していません。これは、ZfcRbac が私に要求するものをすべて提供する、私自身が作成したデータベース/マッパー システムです。

ZfcUser と ZfcRbac を併用しています。

バージョン:

 "name": "zf-commons/zfc-user",
"version": "1.2.2",

"name": "zf-commons/zfc-rbac",
"version": "v2.5.2",

ポインタやヘルプをいただければ幸いです。

4

0 に答える 0