首页 > 解决方案 > 如何使用 Authentication 插件实现 CakePHP ACL 插件

问题描述

我一直在做一个项目,我做的第一件事就是添加身份验证授权插件。自从它被弃用以来,我根本没有使用过 AuthComponent。

现在我想在数据库上添加额外的逻辑并安装ACL Plugin。我还没有设法找到文档,互联网上的所有示例都使用旧的AuthComponent实现了插件。

我需要的是找到一种方法让 ACL 使用新的身份验证插件

这是我的 AppController.php:

    public function initialize(): void
    {
        parent::initialize();

        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');

        // Add this line to check authentication result and lock your site
        $this->loadComponent('Authentication.Authentication');
        $this->loadComponent('Authorization.Authorization');

        $this->loadComponent('Acl', [
            'className' => 'Acl.Acl'
        ]);

        $this->loadComponent('Auth', [
            'authorize' => [
                'Acl.Actions' => [
                    'actionPath' => 'controllers/',
                    'userModel' => 'Users'
                ]
            ],
            'authenticate' => [
                'Form' => [
                    'fields' => ['username' => 'email'],
                    'userModel' => 'Users'
                ],
            ],
            'loginAction' => [
                'plugin' => false,
                'controller' => 'Users',
                'action' => 'login'
            ],
            'loginRedirect' => [
                'plugin' => null,
                'controller' => 'Users',
                'action' => 'index'
            ],
            'logoutRedirect' => [
                'plugin' => null,
                'controller' => 'Users',
                'action' => 'login'
            ],
            'unauthorizedRedirect' => [
                'controller' => null,
                'action' => 'login',
                'prefix' => false
            ],
            'authError' => 'You are not authorized to access that location.',
            'flash' => [
                'element' => 'error'
            ]
        ]);
        /*

stackoverflow上发现“这两个插件不能一起工作,cakephp/acl 严格要求与已弃用的身份验证组件一起使用。如果您想要用于 cakephp/授权的 ACL,那么您需要自己实现”

我不知道该怎么做,所以如果有人知道如何做到这一点或可能是另一种解决方案,我仍在倾听。

标签: authenticationauthorizationaclcakephp-4.x

解决方案


推荐阅读