我正在使用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'));
}
}
如果有人知道为什么它似乎无法加载我的自定义身份验证对象,那将是非常棒的。谢谢!
答案 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。我没有那样试过。