Vor Symfony 2.8 SimplePreAuthenticatorInterface
war im folgenden Namespace halten müssen Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface
Es in 2,8 und geändert in 3,0-Symfony\Component\Security\Http\Authentication\SimplePreAuthenticatorInterface
Weg für eine Authenticator-Klasse, die nach hinten compability Pause
jetzt ein Bündel Ich schreibe veraltet sind die muss entweder in symfony 2.7 und symfony 3.0 funktionieren, es ist ein api authenticator bundle für den privaten Gebrauch.
Ich möchte eine Fabrik für sie schreiben, die
Beispiel von FosUserBundle
if (interface_exists('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')) {
$tokenStorage = $this->get('security.token_storage');
} else {
$tokenStorage = $this->get('security.context');
}
aber meine Klasse
Schnittstelle existance überprüft, die diese Schnittstelle ein Dienst in DI und symfony-Firewall diese direkt verwendet, ist implementiert.Meine Frage ist, wie könnte ich diese Abstraktion in einer Art und Weise Best Practice und logisch machen.
AccessTokenAuthenticator Klasse:
<?php
namespace MyCompany\SBundle\Security;
// this usage for before symfony 2.8
use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface;
/**
* Class AccessTokenAuthenticator
*/
class AccessTokenAuthenticator implements SimplePreAuthenticatorInterface
{
services.yml
# Authentication
mycompany_security.security.accesstoken_authenticator:
class: MyCompany\SBundle\Security\AccessTokenAuthenticator
arguments: ["@mycompany_security.security.accesstoken_userprovider"]
Firewall-Konfiguration:
secure_area:
pattern: ^/
stateless: true
simple_preauth:
authenticator: mycompany_security.security.accesstoken_authenticator
Mein genaue Problem ist, auch wenn ich zwei Klassen definieren, die einander identisch sind, aber der implementation namespace anders, auch wie könnte ich das dem firew geben alle ? Wie kann dies von der Firewall abstrahiert werden?
Jede Hilfe wäre willkommen.