未找到CakePhp 3插件身份验证适配器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未找到CakePhp 3插件身份验证适配器相关的知识,希望对你有一定的参考价值。

我有点像Cakephp(3.5)中的新手,我正在尝试制作我的第一个包含几个子目录的插件(称为Example)。其中一个是UserManager目录,其中包含带有身份验证的用户MVC标准套件。

由于我想添加社交登录和其他内容,我创建了自己的auth组件,如docs中所述:

plugins/Example/UserManager/src/Controller/AppController.php

<?php

namespace ExampleUserManagerController;

use AppControllerAppController as BaseController;

class AppController extends BaseController
{
    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Auth', [
            'authenticate' => [
                'Example/UserManager.Example' => [
                    'fields' => ['username' => 'email', 'password' => 'pass'],
                    'userModel' => 'Users',
                ],
            ], 
        ]);
    }
}

plugins/Example/UserManager/src/Auth/ExampleAuthenticate.php

<?php

namespace AppAuth;

use CakeAuthBaseAuthenticate;
use CakeHttpServerRequest;
use CakeHttpResponse;  

class ExampleAuthenticate extends BaseAuthenticate
{
    // The same as Form authentication, since I'm testing
}

问题是我无法让身份验证组件找到ExampleAuthenticate类。我已经尝试过设置authenticate配置参数了

  • Example
  • ExampleAuthenticate
  • UserManager.Example
  • Example/UserManager.Example
  • ExampleUserManager.Example
  • Example/UserManager.ExampleAuthenticate
  • ExampleUserManager.ExampleAuthenticate

但是我总是在访问Authentication adapter "..." was not found.时得到错误http://localhost/Project/example/user-manager/users :(

有没有人知道我可能会缺少什么?

答案

问题是php函数class_exists(...)无法识别自定义身份验证类,因此在进一步挖掘之后我意识到文档中显示的命名空间仅适用于在App环境中定义的自定义身份验证文件,但不适用于插件一个(傻我)。

所以我把namespace AppAuth;改成namespace ExampleUserManagerAuth;里面的ExampleAuthenticate.php,它就像一个魅力!现在函数class_exists('Example\UserManager\Auth\ExampleAuthenticate')返回true,并且通过在Example/UserManager.Example配置参数中定义authenticate,一切都很完美。

以上是关于未找到CakePhp 3插件身份验证适配器的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义身份验证适配器时检查 CakePHP 上的登录用户信息

CakePHP身份验证插件身份关联

Spring security rest 插件:身份验证失败,未找到 AuthenticationProvider

未安装 Ionic Firebase 电话身份验证插件

IBM Worklight:基于适配器的身份验证成功后未获得响应

CakePHP 3 下的摘要认证