2016-08-01 73 views
2

Ich benutze Symfony 3 und ich habe ein Problem bei der Verwendung access_control in der app/config/security.yml.access_control in Symfony3 funktioniert nicht

Ich installiert FOSUserBundle und ich entdeckte, dass die Routen/Login/Zurücksetzen und/Register immer noch verfügbar sind, wenn der Benutzer die Rolle IS_AUTHENTICATED_ANONYMOUSLY hat. Ich verwende die Grundkonfiguration, wie sie in the documentation erklärt aber es funktioniert nicht:

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 

Gibt es eine Möglichkeit, dass der Fehler aus einer anderen Datei kommt? Ich habe eine Woche lang nach einer Antwort gesucht und kann nicht herausfinden, woher das Problem kommt. Außerdem habe ich versucht, Symfony auf einem anderen Projekt von Grund auf neu zu installieren, nur um es mit einer neuen Konfiguration zu versuchen, und derselbe Fehler tritt auf.

Vielen Dank für Ihre Hilfe!

Screenshot

+0

standardmäßig angemeldet sind, werden die Routen '/ login','/resetting' und '/register "wird auch dann verfügbar sein, wenn Sie eingeloggt sind. Welchen Fehler redest du? – NDM

+0

Ich erhalte keinen Fehler und kann mich erfolgreich anmelden, aber dann kann ich immer noch auf diese Routen zugreifen und der Name des Benutzers wird über dem Formular mit einem Link zum Abmelden angezeigt. Mit anderen Worten, ich kann mich wieder einloggen ... – Jacky

+0

Was ist das Problem genau? Es hört sich nicht so an, als gäbe es irgendwelche Probleme, da Sie sagen, dass Sie auf diese Routen zugreifen können, wenn sie auf anonym eingestellt sind. Das ist richtig ... –

Antwort

1

standardmäßig angemeldet sind, wobei die Routen /login, /resetting und /register wird auch dann weiter zur Verfügung stehen, wenn angemeldet

Wenn Sie das nicht möchten, können Sie mehrere Dinge tun:.

1

Es gibt keine Probleme, ist es ganz normal, dass man auf diese Routen zugegriffen wird, authentifiziert oder nicht:

IS_AUTHENTICATED_ANONYMOUSLY: Alle Benutzer (auch anonymen) diese haben - diese ist nützlich, wenn URLs in die Whitelist aufgenommen werden, um den Zugriff zu garantieren

Dies ist die Rolle auf der untersten Ebene.

Aber Sie können dies in Ihrem fonction tun, die Login verwaltet, wenn Sie /admin umgeleitet werden möchten, wenn Sie auf /login zugreifen möchten

if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
    return $this->redirect($this->generateUrl('your_route_path_to_admin')); 
}