2016-06-09 10 views
0

Ich benutze Symfony 3.1 mit FOSUserBundle.Symfony + FOSUserBundle kann sich nicht anmelden

Ich lese die Dokumente und integrierte FOS in Symfony, hier in Ordnung, die Registrierung scheint gut zu funktionieren und hält die Daten in der DB, ABER, wenn ich versuche mich einzuloggen, werde ich wieder auf die Anmeldeseite als anonym weitergeleitet Benutzer.

Ich überprüfte den Symfony Profiler, und ich kann sehen, dass, wenn es der Pfad/login_check (im Profiler) das Benutzerergebnis als authentifiziert genannt wird, aber nach der/login_check Phase, wenn ich umgeleitet werde, ist der Benutzer wie anonymous ...

-

/login_check von Profiler:

Eigenschaft Wert

Rollen [ROLE_USER]

keine 0

Inherited Rollen

Token Klasse Symfony \ Component \ Security \ Core \ Authentication \ Token \ UsernamePasswordToken

-

Die Sitzungen zu existieren scheint (dump (app.session)) nicht leer ist , aber speichert keine Daten des Benutzers.

, dass mein security.yml ist:

Sicherheit:

encoders: 
    FOS\UserBundle\Model\UserInterface: bcrypt 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: ROLE_ADMIN 

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      login_path: /login 
      check_path: /login_check 
      default_target_path: /redirLogIn 
#    csrf_token_generator: security.csrf.token_manager 

     logout:  true 
     anonymous: true 

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} 
#  - { path: ^/, role: ROLE_USER} 

(ich die csrf Token aufgrund von Problemen bei der Registrierung deaktiviert)

(Dies ist ein Intranet, keine Homepage gibt es“ "Wenn Sie die Website öffnen, werden Sie aufgefordert, sich anzumelden."

Warum?

Dank

+0

Haben Sie dieses Problem gelöst? Ich habe auch das gleiche Problem,/login_check umleiten zu/login page –

Antwort

0

Sie benötigen die Vertiefung in der Datei

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: bcrypt 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 
    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 
    providers: 
     in_memory: 
      memory: ~ 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 
    firewalls: 
     # disables authentication for assets and the profiler, adapt it according to your needs 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     main: 
      # activate different ways to authenticate 

      # http_basic: ~ 
      # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate 

      # form_login: ~ 
      # http://symfony.com/doc/current/cookbook/security/form_login_setup.html 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
       # if you are using Symfony < 2.8, use the following config instead: 
       # csrf_provider: form.csrf_provider 

      logout:  true 
      anonymous: true 

    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 } 
+0

Ich verstehe nicht, in Ihren Schnipsel gibt es keine Encoder ... – Francesco

+0

Sory, mein Fehler. Ich eddit meine Schnipsel. – ciurciurek

+0

Ich habe meine Post bearbeitet, meine Encoder sind korrekt, es sollte etwas anderes sein, das nicht funktioniert, ich denke, ist die Symfony Firewall Auth-Komponente zu debuggen (?) – Francesco

0

Ich bin mir nicht sicher, ob ich verstehe die Frage, die Sie fragen, zu verbessern, aber vielleicht ist es, warum Sie, wenn Sie sich anmelden gerichtet werden die Seite öffnen?

Wenn ja, das ist der Grund:

default_target_path: /redirLogIn 

Ändern Sie die oben auf den Pfad (Route) Sie benötigen.

+0

Nein, mein Problem ist, dass wenn ich das Login-Formular erhalte ' t einloggen, aber als anonym zurückgeben (Anmeldung funktioniert nicht) – Francesco