Ich habe eine Symfony 3-Anwendung mit Benutzerverwaltung über FOSUserBundle. Ich möchte eine Listener-Klasse implementieren, die nach einer ersten Benutzeranmeldung sucht, indem sie den "last_login" -Wert des Benutzers überprüft. Während ich die article on event subscribers gelesen habe, habe ich Mühe herauszufinden, wann genau der last_login Wert aktualisiert wird. Gibt es jemanden mit diesem Wissen oder weiß jemand einen besseren Ansatz bezüglich der ersten Anmeldung eines Benutzers?FOSUserBundle - Funktion bei der ersten Anmeldung ausführen
Antwort
Ich habe mir das gerade angesehen und es scheint, dass Sie einen eventSubscriber verwenden können, um das SecurityEvents :: INTERACTIVE_LOGIN-Ereignis zu abonnieren, um dorthin zu gelangen, wo Sie sein müssen.
class RegistrationSubscriber implements EventSubscriberInterface
{
private $tokenStorage;
public function __construct(TokenStorage $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public static function getSubscribedEvents()
{
return [
SecurityEvents::INTERACTIVE_LOGIN => [
['lastLogin', 150],
],
];
}
public function lastLogin(InteractiveLoginEvent $event){
$user = $this->tokenStorage->getToken()->getUser();
if($user->getLastLogin() == null){
//Do something
}
}
In meinen Tests auf dem ersten Login $ user-> getLastLogin() ist null, so dass Sie jede Logik, die Sie hier benötigen setzen.
Symfony und FOSUserBundle haben Ereignisse dafür. Auch FOSUserBundle hat ein Event Teilnehmer für diese Ereignisse
/**
* @return array
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onImplicitLogin',
SecurityEvents::INTERACTIVE_LOGIN => 'onSecurityInteractiveLogin',
);
}
Sie für diese Ereignisse abonnieren können und Ihre eigene Logik machen. Es gibt keine solche Thibg als initiale Anmeldung in Symfony, die Sie selbst verwalten müssen.
auf die Ereignisse abonnieren und so etwas wie dies versuchen:
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event){
$user = $event->getAuthenticationToken()->getUser();
//some logic to check the user
if(!$user->getLastLogin()){
//its my first login!!! do what ever you want here
}else{
//I have already logged before so just pass
}
}
Sie auch benötigen, um Ihre Teilnehmer Priorität auf -10 oder so etwas zu ändern, um die Veranstaltung vor FOSUserBundle zu fangen, oder Sie werden immer vorbei.
Hoffe es hilft
- 1. Locale-Switch bei der Anmeldung von FOSUserBundle
- 2. Moodle erzwingen Datenschutzrichtlinie bei der ersten Anmeldung
- 3. FOSUserBundle entsperren Benutzer bei der Anmeldung: Änderungen werden nicht beibehalten
- 4. Force Change Passwort bei der ersten Anmeldung
- 5. Tutorial bei der ersten Anmeldung erstellen
- 6. machen nach Erfolg Anmeldung FOSUserbundle
- 7. Sourcetree 1.8.3 Abstürze bei der ersten Anmeldung nach der Installation
- 8. Behalte den Benutzer nach der ersten Anmeldung bei Backendless
- 9. Display verschiedene Flash-Meldung bei der ersten Anmeldung
- 10. HTTP-Post bei erfolgreicher Anmeldung ausführen
- 11. FOSUserBundle + LexixJWTAuthBundle Anmeldung per E-Mail
- 12. Funktion bei Tastendruck ausführen
- 13. Passwort vergessen Funktion fosuserbundle
- 14. Sitecore Timeout bei der Anmeldung
- 15. bei der Anmeldung mit PHP
- 16. Problembehandlung bei der Anmeldung Problem
- 17. mysql hängt bei der Anmeldung
- 18. Devise Umleitung bei der Anmeldung
- 19. OneDrive automatische Anmeldung nach der ersten Autorisierung
- 20. ein Neuling bei seiner ersten Anmeldung Leistung .. Hilfe erforderlich
- 21. Funktion nur beim ersten Start ausführen ios
- 22. Ubuntu Server Skript bei Anmeldung für bestimmte Benutzer ausführen
- 23. Verbindungstimeout bei der Anmeldung bei vcenter über vsphere client
- 24. FOSUserBundle BCryptPasswordEncoder salting
- 25. Anmeldung bei Zimbra Server
- 26. Anmeldung und Registrierung in derselben Seite mit FOSUserBundle
- 27. Warum senden wir 302 bei der Anmeldung und Anmeldung?
- 28. Fehler bei der Anmeldung Pass-lokale Anmeldung Routine
- 29. Django - Benutzer bei der Anmeldung aktualisieren
- 30. Verwenden der ersten Funktion
Für was genau ist die 150? –
Funktioniert aber wie ein Charme, danke! :) –
die 150 ist die priorität, die ich zufällig gewählt habe –