Symfony2: Añadiendo Recuerdame en pantalla de login

jueves, 6 de diciembre de 2012 Etiquetas: ,


Introducción

Cuando utilizamos autentifación de usuarios en una web, una opción común es proporcionar una opción para recordar al usuario la próxima vez que el usuario visite nuestra página. Normalmente se añade una check en el formulario de login para dar la opción al usuario si quiere que sea recordado

La configuración de este funcionamiento en Symfony2 es muy sencillo, y casi no hay que hacer trabajo por nuestra parte, me gusta :-)

Solución

Primero tenemos que configurar el firewall de la siguiente forma:

# app/config/security.yml

firewalls:
    login:
        pattern:  ^/user/login$
        security: false
    secured_area:
        pattern:    ^/       
        form_login: 
        login_path: acme_login
        check_path: acme_security_check
        default_target_path: acme_index
   logout:
        path: GPXLogUserBundle_logout
        target: /
   anonymous: ~
   remember_me:
        key: "%secret%"
        lifetime: 604800 # 1 Semana

Como vemos en la sección donde tenemos configurado el login y el logout, debemos indicar una subsección remember_me, donde se indica una clave, un código alfanumerico que identificará nuestra web en la cookie. En el ejemplo se usa la clave que genera aleatoriamente Symfony2 cuando lo configuramos. La segunda propiedad que indicamos es el tiempo de validez del recordatorio, en el ejemplo una semana, expresado en segundos.

Una vez configurado el fichero de seguridad, sólo nos falta añadir a nuestro formulario de login la check para que el usuario pueda indicarnos que quiere que le recordemos. Lo haremos de la siguiente manera:

 <p>
 <input type="checkbox" id="remember_me" name="_remember_me" checked />
 <label for="remember_me">Remember me</label> 
 </p>

Aquí tenemos que poner a la check el nombre _remember_me, de esta forma Symfony2 tratará automáticamente el proceso de recordar al usuario. Así de sencillo.

Bibliografia

[] Symfony2 Cookbook. How to add "Remember Me" Login Functionality (inglés)

0 comentarios:

Publicar un comentario