如何在Symfony2中注册多个身份验证提供程序?
我基于:创建了自己的身份验证,而且效果很好 但是现在我需要两个身份验证提供者。AuthenticationProviderManager支持此功能,但我无法找到如何将第二个身份验证提供程序添加到我的安全工厂 我的代码: security.yml如何在Symfony2中注册多个身份验证提供程序?,symfony,Symfony,我基于:创建了自己的身份验证,而且效果很好 但是现在我需要两个身份验证提供者。AuthenticationProviderManager支持此功能,但我无法找到如何将第二个身份验证提供程序添加到我的安全工厂 我的代码: security.yml firewalls: wsse_secured: pattern: /api/.* wsse: true WsseFactory.php class WsseFactory implements Sec
firewalls:
wsse_secured:
pattern: /api/.*
wsse: true
WsseFactory.php
class WsseFactory implements SecurityFactoryInterface
{
public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
{
$providerId = 'security.authentication.provider.wsse.'.$id;
$container
->setDefinition(
$providerId,
new DefinitionDecorator(
'wsse.security.authentication.provider'
)
)
->replaceArgument(
0,
new Reference($userProvider)
);
$listenerId = 'security.authentication.listener.wsse.'.$id;
$container->setDefinition(
$listenerId,
new DefinitionDecorator(
'wsse.security.authentication.listener'
)
);
return array($providerId, $listenerId, $defaultEntryPoint);
}
public function getPosition()
{
return 'pre_auth';
}
public function getKey()
{
return 'wsse';
}
public function addConfiguration(NodeDefinition $node)
{
}
}
services.yml:
wsse.security.authentication.provider:
class: LD\BinaryBackendBundle\Security\Authentication\Provider\WsseProvider
arguments: ['', %kernel.cache_dir%/security/nonces]
wsse.security.authentication.listener:
class: LD\BinaryBackendBundle\Security\Firewall\WsseListener
arguments: [@security.context, @security.authentication.manager, @logger]
正如您所看到的,我有一个身份验证提供程序寄存器。如何添加第二个身份验证提供程序?您可以添加一个身份验证提供程序,只需将其添加到防火墙配置中,如果其中一个失败,它将传递给另一个 例如,在我的应用程序中,我使用来自的form_login和oauth,这是我在security.yml中的防火墙:
firewalls:
main:
pattern: ^/
logout: true
anonymous: true
form_login:
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
default_target_path: /manager/
logout:
path: /logout
target: /
oauth:
resource_owners:
google: /login/check-google
facebook: /login/check-facebook
twitter: /login/check-twitter
default_target_path: /manager/
login_path: /login
failure_path: /login
oauth_user_provider:
service: oauth_user_provider
因此,根据url,它使用一个或另一个身份验证提供程序。我尝试使用simple\u form和simple\u preauth,但总是simple\u preauth先尝试