1

我有一个 zf2 应用程序,其中有少数指定为管理员的用户。我想添加一个额外的管理员用户,但无法使其工作。我正在使用ZfcUserLdap进行身份验证。对于现有用户,身份验证顺利进行,我获得了管理员角色;但是,对于新的管理员用户,我没有获得 bjyauthorize 的角色/来自 bjyauthorize 的角色。我相信由于 zend 开发人员工具栏(见下文)以及将以下内容添加到 ZfcUser\Controller\UserController,我没有获得角色:

var_dump($this->serviceLocator->get('BjyAuthorize\Provider\Identity\ProviderInterface')->getIdentityRoles()); die();

上面的代码是在登录操作结束时的转发调用之前添加的。

此外,我正在使用 Zend Developer 工具,如下所述:Zend Framework 2 - BjyAuthorize 始终拒绝访问对于现有帐户,一旦登录,它就会显示管理员角色。对于新帐户,它不会显示任何角色;角色部分为空白。

在登录时阅读了 BjyAuthorize 未检测到角色,并在数据库中正确设置了用户。在数据库中,我的新管理员用户与现有管理员用户相同。user、user_role 和 user_role_linker 表尽可能相同。

我缺少让新用户获得角色并被授权通过 bjyauthorize 的控制器保护的东西。

可能相关的设置信息:

应用程序.config.php

$modules = array(
    'Application',
    'ZendDeveloperTools',
    'BjyProfiler',
    'ZfcTwitterBootstrap',
    'ZfcBase',
    'ZfcUser',
    'ZfcUserLdap',
    'BjyAuthorize',
    'ZfcAdmin',
    'Volunteer',
    'Admin'
);

module.bjyauthorize.global.php

'identity_provider' => 'BjyAuthorize\Provider\Identity\ZfcUserZendDb',

'role_providers' => array(
        // this will load roles from the user_role table in a database
        // format: user_role(role_id(varchar), parent(varchar))
        'BjyAuthorize\Provider\Role\ZendDb' => array(
            'table'             => 'user_role',
            'role_id_field'     => 'role_id',
            'parent_role_field' => 'parent',
        ),
    ),

作曲家.json

{
"name": "zendframework/skeleton-application",
"description": "Skeleton Application for ZF2",
"license": "BSD-3-Clause",
"keywords": [
    "framework",
    "zf2"
],
"homepage": "http://framework.zend.com/",
"require": {
    "php": ">=5.3.3",
    "zendframework/zendframework": "2.*",
    "zf-commons/zfc-base": "0.1.2",
    "zf-commons/zfc-user": "dev-master",
    "bjyoungblood/BjyAuthorize": "1.3.*@dev",
    "zf-commons/zfc-admin": "dev-master",
    "nitecon/zfcuser-ldap": "dev-master",
    "mwillbanks/zfc-twitter-bootstrap": "dev-master",
    "slm/google-analytics": "dev-master",
    "zendframework/zftool": "dev-master"
}
4

0 回答 0