Cakephp错误:身份验证适配器";xmlRpc";找不到

Cakephp错误:身份验证适配器";xmlRpc";找不到,php,cakephp,authentication,Php,Cakephp,Authentication,当我尝试实现自定义登录组件时,x给我一个错误“未找到身份验证适配器”xmlRpc 在我的AppController.php中,我有以下内容 <?php App::uses('Controller', 'Controller'); //Custom Auth App::uses('xmlRpc', 'Controller/Component/Auth'); class AppController extends Controller { //Authentication co

当我尝试实现自定义登录组件时,x给我一个错误“未找到身份验证适配器”xmlRpc

在我的AppController.php中,我有以下内容

<?php

App::uses('Controller', 'Controller');

//Custom Auth
App::uses('xmlRpc', 'Controller/Component/Auth');

class AppController extends Controller {

    //Authentication component

    public $components = array(
        'Session',
        'DebugKit.Toolbar',
        'Auth' => array(
            'authenticate' => array(
                    'xmlRpc'
                )           
            )
        );

}
数组(
“验证”=>数组(
“xmlRpc”
)           
)
);
}
然后我的登录组件位于/Controller/Component/Auth/xmlRpc.php中

<?php

App::uses('BaseAuthenticate', 'Controller/Component/Auth');

class xmlRpc extends BaseAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {
        return true;
    }
}
?>

在我的用户控制器中,我有以下内容:

<?php
App::uses('AppController', 'Controller');

//Custom Auth
App::uses('xmlRpc', 'Controller/Component/Auth');

class UsersController extends AppController {

    public function logout() {
        return $this->redirect($this->Auth->logout());
    }   

    public function login() {

        if ($this->request->is('post')) {

            if ($this->Auth->login()) {

                return $this->redirect($this->Auth->redirectUrl());
                // Prior to 2.3 use `return $this->redirect($this->Auth->redirect());`

            } else {

                $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
            }
        }
    }

}
?>
重定向($this->Auth->logout());
}   
公共函数登录(){
如果($this->request->is('post')){
如果($this->Auth->login()){
返回$this->redirect($this->Auth->redirectUrl());
//在2.3版本之前,使用`返回$this->redirect($this->Auth->redirect())`
}否则{
$this->Session->setFlash('Username或password不正确'),'default',array(),'auth');
}
}
}
}
?>

顺便说一下,在我的authenticate函数中,我总是返回true以进行测试。一旦我消除了这个错误,我将添加逻辑。请帮助我,对我放轻松,因为我是一块蛋糕。如何让cake看到我的自定义身份验证适配器?

我认为您的身份验证适配器的正确名称应该是xmlRpcAuthenticate

class xmlRpcAuthenticate extends BaseAuthenticate {

遵循CakePHP命名约定,类应命名为
XmlRpcAuthenticate
,文件也应命名(当然扩展名为
.php
)。在
App::uses()
调用中,在配置中使用不带
Authenticate
的名称,即
XmlRpc

// This App::uses()  call is actually not necessary in the controller unless
// your are actually trying to access the class directly
App::uses('XmlRpc', 'Controller/Component/Auth');

...

public $components = array(
    ...

    'Auth' => array(
        'authenticate' => array(
             'XmlRpc'
        )           
    )
);

另请参见

将函数的首字母大写,我也用这种方法解决了它。。谢谢