このバンドルを実装しようとしています: https://github.com/BorisMorel/LdapBundle
リスナーを除いて、すべてをセットアップして機能させました-実行されず、プロファイラーは次のように表示されます:
Not Called Listeners
Event name Listener
imag_ldap.security.authentication.pre_bind LdapSecurityListener::onPreBind
kernel.exception ExceptionListener::onKernelException
kernel.exception ProfilerListener::onKernelException
kernel.exception ExceptionListener::onKernelException
kernel.view TemplateListener::onKernelView
これは私のservice.ymlです:
services:
ldap.listener:
class: Riviera\PlutusBundle\EventListener\LdapSecurityListener
tags:
- {name: kernel.event_listener, event: imag_ldap.security.authentication.pre_bind, method:onPreBind}
そして、これは私のリスナーです:
<?php
namespace Riviera\PlutusBundle\EventListener;
//use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use IMAG\LdapBundle\Event\LdapUserEvent;
/**
* Performs logic before the user is found to LDAP
*/
class LdapSecurityListener
{
/**
* Modifies the User before binding data from LDAP
*
* @param \IMAG\LdapBundle\Event\LdapUserEvent $event
*/
public function onPreBind(LdapUserEvent $event)
{
$user = $event->getUser();
$config = $this->appContext->getConfig();
throw new \Exception(sprintf('Username: %s', $user->getUsername()));
}
}
私は何時間も試みており、バンドル コードをデバッグしており、LDAP に接続して次のエラーが発生していると 100% 言えます。
//IMAG\LdapBundle\Provider\LdapAuthenticationProvider.php
try {
$this->dispatcher->dispatch(LdapEvents::PRE_BIND, $userEvent);
} catch (\Exception $expt) {
if ($this->hideUserNotFoundExceptions) {
throw new BadCredentialsException('Bad credentials', 0, $expt);
}
throw $expt;
}
何か考え/アイデアはありますか?
編集
以下のコメントによると、リスナーは呼び出されず、ldap 機能はリスナーが呼び出されることに依存していると思います。
die()
その前にステートメントを配置するtry{}catch{}
と、ブラウザで表示できますが、die ステートメントの後に配置すると、無効な資格情報の例外がスローされることを意味します。