插件配置

时间:2015-07-29 08:14:04

标签: php cakephp cakephp-3.0

我正在创建一个可以使用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。

有什么想法?

1 个答案:

答案 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')
        ]
    ]);
}