我尝试编写LdapAuthentication,我需要一些帮助。
首先,我需要在/ app / Controller /中配置“$ components” 组件/ AppController.php
<?php
class AppController extends Controller {
var $components = array('Auth' => array(
'Ldap',
'authError' => 'Not allowed here',
'authenticate' => array('Form' => array(
'fields' => array(
'username' => 'username',
'password' => 'password',
'domain' => 'domain'
)
)
),
'authorize' => true,
), 'Session');
}
?>
然后我创建一个LdapAuthorize.php之类的 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authorize-objects
<?php
App::uses('BaseAuthorize', 'Controller/Component/Auth');
class LdapAuthorize extends BaseAuthorize {
public function authorize($user, CakeRequest $request) {
echo "test";
}
}
?>
但是当我尝试使用
登录时 if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Username or password is incorrect'),
'default', array(), 'auth');
}
cakephp不使用我的授权功能。
我做错了什么?请帮忙。
答案 0 :(得分:3)
这是一个适用于2.0.x的Ldap Auth类
https://github.com/analogrithems/idbroker/tree/dev_cake2.0
在这里详细介绍了博客文章:
http://www.analogrithems.com/rant/2012/01/03/cakephp-2-0-ldapauth/
**也是**
您的Auth配置错误 - 授权密钥接受字符串或数组 - 布尔值true不会执行任何操作。
如果您希望它在控制器中检查isAuthorized操作 - 请将其设置为:
<?php
...
public $components = array( 'Auth' => array(
...
'authorize' => array( 'Controller' ),
...
));
?>
您在这里传递一个布尔参数,并且AppController中没有isAuthorized函数。此外,您使用旧的php4语法来声明您的成员变量(使用public,protected或private而不是“var”)