Cómo configurar el “remember me” en Silex

Hoy he implementado la funcionalidad de remember me en una aplicación Silex haciendo uso de los proveedores SecurityServiceProvider junto al RememberMeServiceProvider.

Al registrar el RememberMeServiceProvider me daba la siguiente excepción:

InvalidArgumentException: Identifier “security.remember_me.service.{key del firewall}” is not defined.

El problema residía en que registraba el RememberMeServiceProvider antes del SecurityServiceProvider, y eso era lo que lanzaba esa excepción.

Por lo tanto, para que funcione sin problemas deberíamos tener una configuración como la siguiente, respetando como he dicho el orden a la hora de registrar los proveedores de servicios:


$app->register(new Silex\Provider\SessionServiceProvider());


$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls'    => array(
        'site'  => array(
               
               'remember_me'   => array(),
               'pattern'       => '^/',
               'anonymous'     => true,
               'form'          => array(
                          'login_path' => 'login',
                          'check_path' => 'login_check'
                ),
                'users' => $app->share(function () use ($app) {
                    return new \Lib\UserProvider($app);
                }),
                'logout' => array('logout_path' => 'logout'),
         ),
    ),
    'security.access_rules' => array(
         array('^/login', 'IS_AUTHENTICATED_ANONYMOUSLY')
    )
));

$app->register(new \Silex\Provider\RememberMeServiceProvider());

2 comentarios en “Cómo configurar el “remember me” en Silex”

  1. Si has de tener en cuenta el orden, el contenedor pierde su sentido. En todo caso el rememberme debería estar integrado con el security y ser una opción de éste. Vamos, me ha chocado lo del orden.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *