2012-08-23 4 views
5

Ho installato FOSUserBundle e lo sto usando nel mio progetto. La sua pagina di login reindirizza su un percorso sconosciuto /_wdt/50366043f414d. Ho modificato lo default_target_path con lo form_login nel file security.yml, ma non ha avuto effetto.default_target_path non funziona con FOSUserBundle

Come posso modificare il percorso di destinazione della pagina di accesso in FOSUserBundle?

risposta

13

devo impostare il always_use_default_target_path a true, come mostrato nella symfony documentation

#app/config/security.yml 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      login_path: /login 
      default_target_path: /my/desired/path 
      always_use_default_target_path: true 
6

ho avuto lo stesso problema, e la ragione ho avuto questo problema era perché Symfony stava cercando di caricare la barra di web debug (da qui il bit "_wdt" nell'errore), che ha i propri percorsi che vengono chiamati alla fine del caricamento della pagina. Nel mio caso, ho configurato il mio security.yml in questo modo:

app/config/security.yml

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

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       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: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/, role: ROLE_USER } 

Ciò significa che se l'utente sta cercando di aprire una pagina per nulla dietro la radice " /"., si è tenuto a essere loggato

il modo in cui ho risolto il problema era con l'aggiunta del 'parte _wdt' e che consente per gli utenti anonimi:

access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/, role: ROLE_USER } 
+0

Grazie per quello! Questo sta risolvendo il vero problema. Purtroppo la risposta selezionata solo "sovrascrive" l'aspetto del problema. –

0

questo può essere un vecchio problema, ma invece o f cambiando access_control l'attuale configurazione di Symfony2 presenta un firewall aggiuntivo per la barra degli strumenti di debug:

# Disabling the security for the web debug toolbar, the profiler and Assetic. 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false