Bueno la implementación es muy sencilla, basta con agregar unas lineas al archivo security.yml (proyecto/apps/nombreaplicacion/config/security.yml) de nuestra aplicación:
default:
is_secure: true
recuerden conservar los espacios, porque si tabulan... bueno ya sabrán lo que pasa, estas lineas son para pedir que el acceso a los módulos de la aplicación solo puedan ser accedidos por usuarios autenticados, es decir que al momento de validar el usuario sea cual sea la forma en la que lo hagan, recuerden agregar
$this->getUser()->setAuthenticated(true);
de esta forma el usuario estará autenticado y podrá acceder a los módulos de la aplicación.
Bueno, hasta aquí nuestros usuarios del sistema no podrán acceder a nuestra aplicación si nuestro modulo de login se encuentra en el la aplicación que acabamos de proteger, para solucionar estos, conozco hasta ahora dos formas:
- Crear nuestro modulo de login en otra aplicación.
- Des proteger el modulo de login de la aplicación asegurada para que pueda ser accedida por usuarios sin autenticar.
Para la primera, si alguien necesita, que comente o me escriba para hacer una entrada explicando como hacer un modulo de login, y para la segunda, debemos crear una carpeta que se llame config dentro de la carpeta del modulo, es decir que quedara acompañada de las carpetas actions y templates de nuestro modulo, e incluir en la carpeta config un archivo llamado security.yml, y en este archivo incluir las siguientes lineas :
default:
is_secure: false
así de esta forma el modulo quedara desprotegido y podrá ser accedido por usuarios no autenticados pues para autenticarse.
Con lo explicado anteriormente también se pueden proteger o des proteger módulos a nivel de aplicación y acciones a nivel de modulo cambiando el default por el nombre de el modulo o la acción que queremos proteger o des proteger.
Otra cosa importante en la seguridad de la aplicación son los roles o credenciales como se llaman en Symfony.
Para hace esto primero autentiquemos a alguien como se dijo anteriormente y ademas agreguemos:
$this->getUser()->addCredential('nombredecredencial', 'valor'); //si necesitamos valores o
$this->getUser()->addCredential('nombredecredencial'); //credencial sencilla
así nuestro usuario tendrá una credencial de acceso a determinados módulos, y para configurar el acceso al modulo con cierta credencial agregamos al security.yml del modulo.
default:
is_secure: true
credentials: nombredecredencial
si necesita solo una credencial, para otras configuraciones de credenciales
credentials: [credencial1, credencial2] // credencial1 and credencial2
credentials: [[credencial1, credencial2]] // credencial1 or credencial2
recuerden que estas configuraciones la pueden hacer tanto a nivel de modulo como de acciones, yo probé hacerlo todo en el security.yml de la aplicación y no funciono, así que me toco ademas configurar el security.yml de algunos módulos.
Hasta aqui tenemos protegidos nuestros módulos por autenticación y por credenciales, pero cuando no puedo acceder? y estoy perdido, lo normal seria que la aplicación me redirigiera hacia el modulo de login, para hacer esto vamos a configurar el archivo settings.yml ubicado en la carpeta config de nuestra aplicación y agregamos o ubicamos las siguientes lineas:
all:
.action:
login_module: nombremodulodelogin
login_action: nombreaccionmostarinterfazlogin //normalmente index
Y por ultimo recordemos des autenticar y limpiar la variables de sesión de la siguiente forma:
$this->getUser()->setAuthenticated(false);
$this->getUser()->clearCredentials();
$this->getUser()->getAttributeHolder()->clear();
RECUERDEN EJECUTAR SYMFONY CC, CUANDO MODIFIQUEMOS CUALQUIER ARCHIVO .YML
No hay comentarios:
Publicar un comentario