2017-03-19 18 views
0

In meinem Symfony-Projekt verwende ich UserInterface in meiner User Entität, um Authentifizierung zu behandeln. Ich benutze EquatableInterface auch zu überprüfen, ob Benutzer die E-Mail geändert wird, während er angemeldet ist.Symfony überprüfen, ob der Benutzer authentifiziert ist

public function isEqualTo(UserInterface $user) 
{ 
    if (!$user instanceof Account) { 
     return false; 
    } 
    if ($this->email !== $user->getEmail()) { 
     return false; 
    } 
    return true; 
} 

Alle Arbeiten wie erwartet, aber wenn ich Benutzer-E-Mail in DB ändern Ich bin nicht abgemeldet, nur nicht authentifiziert wie Sie sehen können im folgenden Screenshot.

https://s15.postimg.org/6md5htszf/22781921b8.png

So würde ich wissen, wie kann ich in einem Controller überprüfen, ob Benutzer authentifiziert ist? Und wie kann ich Benutzer zum Abmelden zwingen, wenn isEqualTo false zurückgibt?

Antwort

2

ich die Lösung gefunden verwenden, und ich will, es zu teilen, wenn jemand anderes das gleiche Problem haben.

Um zu überprüfen, ob Benutzer authentifiziert ist, benötigen wir TokenInterface, die von TokenStorage implementiert wird. Dann müssen wir nur isAuthenticated() Methode aufrufen.

$tokenInterface = $this->get('security.token_storage')->getToken(); 
$isAuthenticated = $tokenInterface->isAuthenticated() 
0

Schnelle Methode: siehe Methode getUser in Symfony\Bundle\FrameworkBundle\Controller unter link. Wenn Sie dieses Verhalten irgendwo im Dienst benötigen, verwenden Sie den Dienst security.token_storage als Abhängigkeit.

Try Weg-Methode (symfony-like): benötigen Sie Symfony Sicherheit Voters

Verwandte Themen