dotws86260 2017-12-20 03:26
浏览 26
已采纳

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

I'm kinda a newbie in Cakephp (3.5) and I'm currently trying to make my first plugin (called Example) which contains several sub-directories. One of them is the UserManager directory which contains a Users MVC standard suit with authentication.

Since I want to add social logins and other stuffs, I created my own auth component as explained in the docs :

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

<?php

namespace Example\UserManager\Controller;

use App\Controller\AppController 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 App\Auth;

use Cake\Auth\BaseAuthenticate;
use Cake\Http\ServerRequest;
use Cake\Http\Response;  

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

The problem is that I can't make the authentication component find the ExampleAuthenticate class. I already tried by setting the authenticate config param like

  • Example
  • ExampleAuthenticate
  • UserManager.Example
  • Example/UserManager.Example
  • Example\UserManager.Example
  • Example/UserManager.ExampleAuthenticate
  • Example\UserManager.ExampleAuthenticate

but I always get the error Authentication adapter "..." was not found. when visiting http://localhost/Project/example/user-manager/users :(

Does anyone have any clue of what I might be missing?

  • 写回答

1条回答 默认 最新

  • douji1077 2017-12-24 00:35
    关注

    The problem was that the php function class_exists(...) didn't recognise the custom authentication class, so after digging a bit more I realised that the namespace shown in the docs only works for a custom authentication file defined in the App environment, but not in the Plugin one (silly me).

    So I changed namespace App\Auth; to namespace Example\UserManager\Auth; inside ExampleAuthenticate.php and it worked like a charm! now the function class_exists('Example\\UserManager\\Auth\\ExampleAuthenticate') returns true and everything works perfect by defining Example/UserManager.Example in the authenticate config params.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装