CakePHP 2.x自定义“身份验证适配器”LdapAuthorize“未找到

时间:2013-08-07 03:29:10

标签: cakephp authentication

我正在使用CakePHP构建一个应用程序并尝试合并一个自定义身份验证对象,但它似乎无法找到它。我尝试登录时出现以下错误:“未找到”身份验证适配器“LdapAuthorize”。我用我的身份验证代码创建了文件app / Controller / Component / Auth / LdapAuthorize.php。在“AppController.php”的顶部附近,我有

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

并且在AppController类中我有

public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect'  => array('controller' => 'pendings', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
            'authorize'      => array('Controller'),
            'authenticate'   => array('LdapAuthorize')
        )
    );

然后在我的UsersController.php中我有以下登录功能。

        public function login() {       

        if($this->request->is('post')) {
            if($this->Auth->login()) { 
                                // My Login stuff...
                            }
                    else
                        $this->redirect(array('controller'=>'someController', 'action'=>'someAction'));         
        }
    }

如果有人知道为什么它似乎无法加载我的自定义身份验证对象,那将是非常棒的。谢谢!

2 个答案:

答案 0 :(得分:2)

我认为你的App::uses()是错的,因此找不到课程。您当前的代码:

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

试图找到 Controller / Component / Auth / LdapAuthorize / LdapAuthroize.php

第一个参数是类名(你有一个打字错误),第二个参数只是包含该类的目录的路径,你不需要再次添加类名。

试试这个:

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

答案 1 :(得分:2)

我将自定义身份验证类放在 Controller / Component / Auth 中。例如,我的班级名称是 CustomUserAuthenticate ,文件的路径是,

  

<强>控制器/组件/认证/ CustomUserAuthenticate.php

然后在我的 AppController 中,我将以下内容添加到authenticate数组中,

class AppController extends Controller {      
    public $components = array(
        'Auth' => array(
            /** Any other configuration like redirects can go here */
            'authenticate' => array(
                'CustomUser'
            )
        )
    );
}

authenticate数组中的字符串必须与该类的名称匹配,但 Authenticate 字除外。

我的 CustomUserAuthenticate 类扩展了CakePHP的 Controller / Component / Auth / BaseAuthenticate 并覆盖了authenticate方法。 CakePHP的文档说明这不是required。我没有那样试过。