2012-08-23 13 views
5

He instalado FOSUserBundle y lo estoy usando en mi proyecto. Su página de inicio de sesión redirige a una ruta desconocida /_wdt/50366043f414d. Cambié el default_target_path bajo form_login en el archivo security.yml, pero no tuvo efecto.default_target_path no funciona con FOSUserBundle

¿Cómo puedo cambiar la ruta de destino de la página de inicio de sesión en FOSUserBundle?

Respuesta

13

que debe establecer el always_use_default_target_path a true, como se muestra en 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

que tenía el mismo problema, y ​​la razón por la que estaba teniendo este problema se debía a que Symfony estaba tratando de cargar la barra de depuración web (de ahí el bit "_wdt" en el error), que tiene sus propias rutas que se llaman al final de la carga de la página. En mi caso, yo había configurado mis security.yml así:

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 } 

Esto significa que si el usuario está tratando de abrir una página para cualquier cosa detrás de la raíz " /"., que está obligado a estar conectado a

la forma en que solucionó el problema era mediante la adición de la 'parte _wdt' y permitir que los usuarios anónimos:

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

¡Gracias por eso! Esto es resolver el problema real. Lamentablemente, la respuesta seleccionada solo "sobrescribe" la apariencia del problema. –

0

Esto puede ser un problema antiguo, pero en vez de f cambiando access_control la configuración actual de Symfony2 tiene un firewall adicional para la barra de herramientas de depuración:

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