我有一个zf2应用程序,其中有少数用户被指定为管理员。我想添加一个额外的管理员用户,但一直无法使其工作。我正在使用ZfcUserLdap进行身份验证。对于现有用户,身份验证运行良好,我获得了管理员角色;但是,对于新的管理员用户,我没有从bjyauthorize获得角色。我相信我没有得到一个角色,因为zend开发人员工具栏(见下文)并将以下内容添加到ZfcUser \ Controller \ UserController:
var_dump($this->serviceLocator->get('BjyAuthorize\Provider\Identity\ProviderInterface')->getIdentityRoles()); die();
在登录操作结束时,在前向呼叫之前添加上述代码。
此外,我正在使用Zend Developer工具,如下所示:Zend Framework 2 - BjyAuthorize always denies access对于现有帐户,它会在登录后显示管理员角色。对于新帐户,它不显示任何角色;角色部分是空白的。
我读了No role detected by BjyAuthorize when login并在db中正确设置了用户。在数据库中,我有新的管理员用户与现有的管理员用户相同。 user,user_role和user_role_linker表尽可能相同。
我错过了新用户获取角色的权利,并被授权通过bjyauthorize的控制器守卫。
潜在相关的设置信息:
application.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',
),
),
composer.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"
}