1

Symfony 5在我的网站上使用。为了对用户进行身份验证,我使用了专门用于此目的的LDAP安全包。它运作良好

我想要的是登录数据库,所有客户端连接都失败了。使用自定义 LDAP 提供程序和用户检查器,我能够捕捉到:

  • 锁定异常
  • 禁用异常
  • AccountExpiredException
  • CredentialsExpiredException
  • UsernameNotFoundException

我想要的是捕获无效的凭据,但我没有找到抛出这个异常的地方......

为你:

  1. 请问在哪里可以捕获无效密码异常?
  2. 请覆盖以捕获所有安全异常的最简单方法在哪里?

谢谢

4

1 回答 1

0

您应该通过自定义访问被拒绝处理程序获得所有这些异常。(父级例外)

namespace App\Security;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;

class AccessDeniedHandler implements AccessDeniedHandlerInterface
{
    public function handle(Request $request, AccessDeniedException $accessDeniedException)
    {
        // ...

        return new Response($content, 403);
    }
}

-

# config/packages/security.yaml
firewalls:
    # ...

    main:
        # ...
        access_denied_handler: App\Security\AccessDeniedHandler

有关更多信息,请参阅https://symfony.com/doc/current/security/access_denied_handler.html

于 2019-12-29T03:55:11.873 回答