Я работаю над созданием веб-приложения централизованной аутентификации с Symfony 3.4, и у меня возникла проблема с автоматическим управлением исключениями, которое обеспечивает Symfony. Проблема заключается в том, что я хочу перехватить исключение ConnectionException, возникающее в компоненте LDAP при сбое подключения к Active Directory. Цель состоит в том, чтобы использовать это исключение, чтобы замечать, когда оно терпит неудачу, и перенаправлять на определенную страницу. Но в тот самый момент, когда Exception вызывается компонентом LDAP, Symfony замечает событие kernel.exception и затем отображает страницу исключения отладки вместо того, чтобы позволить программе пойти и перехватить исключение.
Как я могу решить эту проблему и быть уверенным, что Исключение перехвачено и используется моим кодом, а не автоматически Symfony?
Я присоединяю вас к образцу кода и отображаемой странице:
<?php
namespace App\Utils;
use App\Entity\User;
use Symfony\Component\Ldap\Ldap;
use Symfony\Component\Ldap\Exception\ConnectionException;
class ActiveDirectoryStuff
{
private $domain = 'myDomain';
private $ldapString = 'ldap://';
public function __construct()
{}
public function connection($username, $password)
{
try {
$dn = $username.'@'.$this->domain;
$ldap = Ldap::create('ext_ldap', array(
'connection_string' => $this->ldapString . $this->domain,
));
$ldap->bind($dn, $password); //where the ConnectionException is raised
return $ldap;
} catch (\ConnectionException $ce) {
throw $ce;
}
}
}
Изображение страницы отображается автоматически