David的回答很好,但是对于新手来说,它缺少一些细节-
因此,这是要填补空白。
除了创建AuthenticationHandler之外,还需要使用创建处理程序的捆绑软件中的服务配置将其设置为服务。默认的捆绑软件生成将创建一个xml文件,但我更喜欢yml。这是一个示例services.yml文件:
#src/Vendor/BundleName/Resources/config/services.ymlparameters: vendor_security.authentication_handler: VendorBundleNameHandlerAuthenticationHandlerservices: authentication_handler: class: %vendor_security.authentication_handler% arguments: [@router] tags: - { name: 'monolog.logger', channel: 'security' }您需要修改DependencyInjection捆绑包扩展以使用yml而不是xml,如下所示:
#src/Vendor/BundleName/DependencyInjection/BundleExtension.php$loader = new LoaderYamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));$loader->load('services.yml');然后在应用程序的安全性配置中,设置对您刚定义的authentication_handler服务的引用:
# app/config/security.ymlsecurity: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /login_check success_handler: authentication_handler failure_handler: authentication_handler



