我有一个 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"
}