我正在创建一个可以使用LDAP或回退到自定义解决方案的用户身份验证插件。
LDAP需要一系列信息,包括域,协议和baseDN。
我想知道这样一个插件的最佳配置方法是什么?
我认为使用bootstrap.php
文件是最好的,因为这与大多数插件使用的方式类似。
示例引导程序配置:
Configure::write('UserAuth.config', [
'protocol' => 'ldap://',
'domain' => 'example.net',
'basedn' => 'dc=example,dc=net',
]);
我的一位同事建议使用InstanceConfigTrait
作为一种默认配置的方法,可以在另一点覆盖。
示例InstanceConfigTrait配置:
protected $_defaultConfig = [
'protocol' => '',
'domain' => '',
'basedn' => '',
];
我理解他为什么建议使用InstanceConfigTrait,但实际上没有默认配置,因为只有拥有正确的信息才能使用LDAP。
有什么想法?
答案 0 :(得分:2)
Auth适配器应该以相同的方式工作,所以当你create them时。 BaseAuthenticate和Authorize已经在使用实例配置特征。 When you configure them配置数据在那里传递。
我会将它留给应用程序的开发人员(并以LDAP作为插件)将他的配置传递给适配器。当在提供的链接中配置auth时,可以在AppController :: initialize()中轻松完成此操作。
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Ldap.Ldap' => [
'protocol' => 'ldap://',
'domain' => 'example.net',
'basedn' => 'dc=example,dc=net',
]
]
]);
}
要么在那里进行硬编码,要么只使用Configure :: read()
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Ldap.Ldap' => Configure::read('Ldap.connection')
]
]);
}