2016-04-02 4 views
1

Ich bin neu zu Symfony2 Version 3.0 und ich versuche, ein Login-Formular zu erstellen. Aber ich bin in Security.yml-Konfiguration fest und ich weiß nicht, was los ist. Ich habe in Google für 3 Stunden gesucht, aber kein Glück. Hoffe, du kannst mir helfen. So weit ist hier mein Code.Symfony2 security.yml korrekte Konfiguration

security: 
    encoders: 
    AppBundle\Entity\User: 
     algorithm: bcrypt 

    providers: 
    db_provider: 
     entity: 
     class: AppBundle:User 
     property: username 

    firewalls: 
    login_area: 
     pattern: ^/user/login$ 
     security: false 

    secured_area: 
     pattern: ^/admin 
     anonymous: ~ 
     form_login: 
     login_path: user/login 
     check_path: user/login-check 
     always_use_default_target_path: true 
     default_target_path: /admin 
     provider: db_provider 

Jedes Mal, wenn ich zu http://localhost:8000/admin gehen sie mir diesen Fehler gibt

The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin". 


Invalid configuration for path "security.firewalls.secured_area": The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin". 
+0

Warum Sicherheit: und Encoder: hat die gleiche vertikale Ausrichtung? – Rinat

+0

nein die Ausrichtung ist in meiner Datei korrekt, es passiert einfach die Ausrichtung wurde verschoben, nachdem ich es hier kopiert – Makubex

+2

Antwort sagte, dass Logic-Check von Admin wie Admin/Login-Check instea des Benutzers/Login-Check beginnen sollte. Können Sie dies mit dem Ändern des zugehörigen Routing versuchen? – Rinat

Antwort

0

Ihr login_check Weg von einem Firewalls abgedeckt werden müssen.

firewalls: 
    login_area: 
     pattern: ^/admin/user/login$ 
     security: false 

    secured_area: 
     pattern: ^/admin 
     anonymous: ~ 
     form_login: 
      login_path: /admin/user/login 
      check_path: /admin/user/login-check 
      always_use_default_target_path: true 
      default_target_path: /admin 
      provider: db_provider 

access_control: 
    - { path: ^/admin/user/login, role: IS_AUTHENTICATED_ANONYMOUSLY } 

Hinweis von symfony.com docs:

Stellen Sie sicher, dass Ihre check_path URL (zB/login) hinter der Firewall ist Sie für Ihre Form Login (in diesem Beispiel verwendet wird, die einzelnen Firewall stimmt mit allen URLs überein, einschließlich/login). Wenn/login nicht mit einer beliebigen Firewall übereinstimmt, erhalten Sie eine Fehlermeldung, dass der Controller für die Pfad "/ login" -Ausnahme nicht gefunden werden kann.

Verwandte Themen