2011-12-27 12 views
9

Estoy usando FOSUserBundle para la autenticación en Symfony2. Todo funciona bien excepto "recordarme". Mi security.yml se ve así:FOSUserBundle y recuérdame

security: 
providers: 
    fos_userbundle: 
     id: fos_user.user_manager 

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

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
     logout:  true 
     anonymous: true 
     remember_me: 
      key:  aSecretKey 
      lifetime: 3600 
      path: /
      domain: ~ 

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 } 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: ROLE_ADMIN 

¿Alguien sabe cómo resolver esto.

Respuesta

2

Remember me función puede no funcionar si el navegador no puede establecer cookies en su domain (localhost, por ejemplo). Si este es un caso, configure su dominio como un nombre de dominio válido (p. Ej., dev.site.com). También asegúrate de haber borrado el caché.

+1

Gracias por la respuesta. Intenté estas posibilidades, pero luego descubrí que el problema es con la desconexión: verdadero en security.yml. Borro esta línea y todo funciona bien. – repincln

0

Está funcionando para mí con duración de sesión en complemento de la configuración de seguridad remenber_me:

framework: 
    session: 
     default_locale: %locale% 
     auto_start:  true 
     lifetime:  3600 
+1

¿Dónde se debe agregar esta sección? security.yml, bajo ... ¿qué? –

10

Esto no estaba trabajando para mí, ni porque solía 2 proveedores de usuario: FOSUserBundle y FosFacebook.

La cookie en realidad se estaba configurando, pero en TokenBasedRememberMeServices, processAutoLoginCookie vi que se estaba usando el proveedor incorrecto.

Para solucionarlo tuve que especificar en security.yml en la sección remember_me el proveedor que quería usar.

firewalls: 
    main: 
     ... 
     remember_me: 
      key:  "%secret%" 
      lifetime: 2592000 
      path: /
      domain: ~ 
      user_provider: fos_userbundle 

Quizás esto ayude a alguien más también.

+1

¡La mejor respuesta de Omg! Me ahorró toneladas de depuración <3 –

+0

¡Esta debería ser la respuesta ganadora! – Sergiu

5

Como dijo "Adrian C", pero con un pequeño cambio que funcionó para mí.

lugar "clave" Tenía "secreta"

firewalls: 
    main: 
     ... 
     remember_me: 
      secret:  "%secret%" 
      lifetime: 2592000 
      path: /
      domain: ~ 
      user_provider: fos_userbundle 
Cuestiones relacionadas