2011-11-03 16 views
5

Utilizzando “normale” - e non “mi ricordo” Autenticazione - posso impostare un successo e fallimento gestori, aggiungendo questo al file security.yml:Come posso ascoltare gli eventi di riautenticazione "ricordami" in Symfony2?

form_login: 
    # ... 
    success_handler: authentication_handler 
    failure_handler: authentication_handler 

ma non riuscivo a trovare un modo per l'ascolto per “ricordare me "riautenticazione, quando la sessione di un utente è scaduta e un cookie" ricordami "viene utilizzato per riautentarlo nuovamente. Qualche idea su come posso ottenere questo?

risposta

0

Non l'ho provato ma forse è possibile collegare l'ascoltatore a success_handler ma assicuratevi di iniettare il servizio SecurityContext tramite <argument> nella configurazione del servizio.

Poi, è appena si entra metodo di servizio che fate:

if ($this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')){ 
    // I am remembered visitor 
}else{ 
    // I am the new visitor 
} 

Ancora una volta, questo è solo un'idea, ma suona come potrebbe fare ...

+0

Il problema è che il 'success_handler' allegato a' form_login' non viene chiamato quando un utente viene relegato da un cookie "ricordami". –

2

creare un listener per l'interactive_login evento. Ciò viene attivato sia dagli accessi semplici che "ricordati di me" (vedi Symfony\Component\Security\Http\Firewall\RememberMeListener.php @line: 77).

Nell'ascoltatore è possibile separare i due controllando il cookie. È possibile trovare ulteriori informazioni sull'ascoltatore here.

+0

Grazie per la risposta. Non ho bisogno di questa funzionalità ora, ma quando avrò bisogno di nuovo proverò la tua soluzione per vedere se funziona. –

+0

Devo notare che, mentre funziona, non ti dà accesso all'oggetto Response. – Putr

Problemi correlati