Ich spiele mit AbstractGuardAuthenticator
aus dem relativ neuen Guard
Subsystem in Symfony 2.8.Symfony 2.8 Guard AbstractGuardAuthenticator, wie wird ein echtes Token zurückgegeben?
Mein Setup ist wirklich einfach. Ich sende eine Anfrage an eine geschützte URL, die einen Benutzernamen verwendet: Passwort base64 codiert. Es prüft beide gegen die Datenbank und sollte ein Token zurückgeben.
Die Authentifizierung erfolgreich Methode:
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
//If login successful, return token
return new Response($this->tokenStorage->getToken());
}
Was es gibt ist:
PostAuthenticationGuardToken(user="test", authenticated=true, roles="ROLE_ADVANCED,
ROLE_USER")
Nun ist es das, was ich gegeben erwarten würde, dass die AbstractGuardAuthenticator
die Methode definiert dieses Token genau für das Erstellen wie Dies.
public function createAuthenticatedToken(UserInterface $user, $providerKey)
{
return new PostAuthenticationGuardToken(
$user,
$providerKey,
$user->getRoles()
);
}
UPDATE 1.1:
die LexikJWTAuthenticationBundle
ich jetzt versuchen, verwende Json Web Tokens in meiner Anwendung AbstractGuardAuthenticator zu implementieren. Das Lexik-Paket bietet sowohl einen Erfolgs- als auch einen Fehlerhandler: lexik_jwt_authentication.handler.authentication_success
& lexik_jwt_authentication.handler.authentication_failure
die auf Klassen verweisen, die bestimmte JWT-Variablen in sie injizieren. Wie hakt ich sie in AbstractGuardAuthenticator
's Erfolg und Fehler Handler?
crud:
anonymous: ~
guard:
authenticators:
- app.token_authenticator
pattern: ^/database/
Und die Guard
Erfolg und Misserfolg Methoden
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
if ($token = $request->headers->get('X-AUTH-TOKEN')) {
//on success, let the request continue
} else {
//If login successful, return token
return new Response($this->tokenStorage->getToken());
}
}
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
$data = array(
'message' => strtr($exception->getMessageKey(), $exception->getMessageData())
// or to translate this message
// $this->translator->trans($exception->getMessageKey(), $exception->getMessageData())
);
return new JsonResponse($data, 403);
}
ich zur Zeit erstreckt und JWTTokenAuthenticator
mit meiner eigenen Token Authenticator anstelle der AbstractGuardAuthenticator
als beide implementieren GuardAuthenticatorInterface
verschmelzen.
Danke Jasper, ich werde jetzt lesen und ich werde zu Ihnen so schnell wie möglich zurück. Da das 'GuardTokenInterface' nur das' TokenInterface' implementiert, war ich ziemlich verwirrt, was ich damit machen sollte. –
Ich habe schon eine Weile mit dem LexikJWTAuthenticationBundle herumgespielt und ich denke, dass das meiste davon jetzt funktioniert, aber ich bin verwirrt darüber, wie ich dies in meinem 'AbstractGuardAuthenticator' implementiere, da die Dokumentation vorschlägt, diese Authentifizierungshandler über zu injizieren ein 'form_login' welches ich nicht benutze. Ich werde meine Frage mit den Konfigurationsdetails aktualisieren. –