Warnung : 'IS_AUTHENTICATED_FULLY'
Wenn Sie nur nach prüfen, wird false zurückgegeben, wenn sich der Benutzer mit der Funktion "Angemeldet bleiben" angemeldet hat.
Laut Symfony 2-Dokumentation gibt es drei Möglichkeiten:
IS_AUTHENTICATED_ANONYMOUSLY - Wird automatisch einem Benutzer zugewiesen, der sich in einem Firewall-geschützten Teil der Site befindet, sich jedoch nicht angemeldet hat. Dies ist nur möglich, wenn anonymer Zugriff zugelassen wurde.
IS_AUTHENTICATED_REMEMBERED - Wird automatisch einem Benutzer zugewiesen, der über ein Remember-Me-Cookie authentifiziert wurde.
IS_AUTHENTICATED_FULLY - Wird automatisch einem Benutzer zugewiesen, der während der aktuellen Sitzung seine Anmeldedaten angegeben hat.
Diese Rollen repräsentieren drei Authentifizierungsebenen:
Wenn Sie die IS_AUTHENTICATED_REMEMBERED
Rolle haben, dann haben Sie auch die IS_AUTHENTICATED_ANONYMOUSLY
Rolle. Wenn Sie die
IS_AUTHENTICATED_FULLY
Rolle haben, haben Sie auch die beiden anderen Rollen. Mit anderen Worten, diese Rollen repräsentieren drei Ebenen zunehmender "Stärke" der Authentifizierung.
Ich bin auf ein Problem gestoßen, bei dem Benutzer unseres Systems, die die Funktion "Angemeldet bleiben" verwendet hatten, so behandelt wurden, als hätten sie sich auf Seiten, auf die nur geprüft wurde, überhaupt nicht angemeldet 'IS_AUTHENTICATED_FULLY'
.
Die Antwort besteht dann darin, dass sie sich erneut anmelden müssen, wenn sie nicht vollständig authentifiziert sind, oder nach der gespeicherten Rolle suchen müssen:
$securityContext = $this->container->get('security.authorization_checker');
if ($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
}
Hoffentlich wird dies jemanden da draußen davor bewahren, den gleichen Fehler zu machen, den ich gemacht habe. Ich habe genau diesen Beitrag als Referenz verwendet, um zu überprüfen, ob jemand bei Symfony 2 angemeldet war oder nicht.
Quelle: http://symfony.com/doc/2.3/cookbook/security/remember_me.html#forcing-the-user-to-re-authenticate-before-accessing-certain-resources