用户通过认证后如何加载ACL / bjyauthorize


How to load ACL / bjyauthorize once user is authenticated?

我已经安装了ZendFramework bjyauthorize。我还安装了zfcuser,但我不想使用它。我还有其他认证模块。我想知道如何触发或加载bjyauthorize角色/ACL,用户获得身份验证后。

这是一个正确的提供者吗?

namespace Firewall'Provider'Identity;
//use BjyAuthorize'Provider'Identity;
//use BjyAuthorize'Exception'InvalidRoleException;
//use Zend'Db'Adapter'Adapter;
//use Zend'Db'Sql'Where;
//use Zend'Db'Sql'Sql;
//use Zend'Db'Sql'Select;
//use Zend'Permissions'Acl'Role'RoleInterface;
//use Zend'Authentication'Storage'Session as SessionStorage;
//use BjyAuthorize'Provider'Identity'ProviderInterface;
//use Zend'Db'TableGateway'TableGateway;
//use Zend'Db'Sql'Expression;
//use Zend'Authentication'AuthenticationService; 
//
//class Myprovider implements  ProviderInterface {
//    
//    
//
//public function setDbAdapter();
//public function getDbAdapter();
//public function getIdentityRoles();
//public function getDefaultRole();
//public function getRoles();
//
//}

use BjyAuthorize'Provider'Identity'ProviderInterface;
use Zend'Authentication'AuthenticationService;
class Myprovider implements ProviderInterface
{
//    public function getDefaultRole()
//    {
//        $aTest = "test";
//        return new Debug();
//    }
    public function getIdentityRoles()
    {
        $oIdentity = $this->getIdentity();
        $aRoles = [];
        if(!empty($oIdentity))
        {
            $aRoles = $oIdentity->getRoles();
        }
        return $aRoles;
    }
    protected $authService;
    public function __construct(AuthenticationService $authService)
    {
        $this->authService = $authService;
    }
    public function setAdapter($adapter)
    {
        return $this->authService->setAdapter($adapter);
    }        
    public function getAdapter()
    {
        return $this->authService->getAdapter();
    }
    public function getStorage()
    {
        return $this->authService->getStorage();
    }
    public function getIdentity()
    {
        return $this->authService->getIdentity();
    }
    public function clearIdentity()
    {
        return $this->authService->clearIdentity();
    }
}

bjyAuthorize不直接与您的身份验证模块交互。它只需要当前登录用户的角色。它通过身份提供者获得这些信息。因此,您应该扩展身份提供者的ProviderInterface,以返回属于当前登录用户的角色。

身份提供程序接口

您可能还应该更改(或自己创建)默认角色提供程序,以返回您为身份验证模块定义的角色