Upload
rightster
View
18.007
Download
1
Embed Size (px)
DESCRIPTION
Introducción a la creación de formularios en Symfony2 así como el nuevo componente de Seguridad: security.yml, creación de página de login, etc ...
Citation preview
Tutorial #4 Formularios y Seguridad.Tutorial #4 Formularios y Seguridad.
Javier López
JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLÓN DESYMFONY.COM
DESYMFONY.COM
Importante
Algunas partes de este presentación no se pueden entender bien sin ver el vídeo de su impartición
Puedes ver el vídeo enhttp://bit.ly/sf-tutorial4
Puedes descargar el código de partida para la presentación enhttps://github.com/desymfony/desymfony/tree/tutorial4
DESYMFONY.COM
Javier LópezJavier López
● Socio fundador de Flai Webnected S.L (www.flai.es)
● Programador en symfony desde symfony 1.0, allá por 2008
● Zend Certified Engineer
● Co-organizador de Desymfony
Quién es este tipo
DESYMFONY.COM
FormulariosFormularios
DESYMFONY.COM
Formularios
● Más de dos años de desarrollo
● Principal razón del retraso de la versión 2
● Librería escrita desde 0
● Olvida casi todo lo que conocias de symfony 1.4
Algunas apuntes
DESYMFONY.COM
Formularios ¿Qué vamos a hacer?
DESYMFONY.COM
Formularios Qué vamos a hacer
● Crearemos la pantalla de registro = Ruta + Controlador + Vista
● Crearemos la clase del formulario de registro
DESYMFONY.COM
SeguridadSeguridad
DESYMFONY.COM
Seguridad Algunas apuntes
Las 4 palabras mágicas para entender la seguridad:
● Firewalls (Autenticación)
● Access Control (Autorización)
● Providers (Dónde están mi usuarios)
● Encoders (Cómo se procesan las contraseñas)
DESYMFONY.COM
Seguridad El proceso en imágenes
/
Cli
ent e
/
Fir
ewal
l
Ap
lica c
ión
Acc
ess
Co
ntr
ol
Autenticación Autorización
DESYMFONY.COM
Seguridad Accediendo a una URL no protegida
/
Cli
ent e
/
Fir
ewal
l
Ap
lica c
ión
Acc
ess
Co
ntr
ol
Autenticación Autorización
Soy anónimoAnónimos
bienvenidos!No hay reglas
Para /
DESYMFONY.COM
Seguridad Accediendo a una URL protegida
/perfil
Cli
ent e
/
Fir
ewal
l
Ap
lica c
ión
Acc
ess
Co
ntr
ol
Autenticación Autorización
Soy anónimoAnónimos
bienvenidos!Debes ser
usuario registrado
Lo sientohaz login
DESYMFONY.COM
Seguridad Accediendo a una URL protegida sin permisos
/admin
Cli
ent e
/
Fir
ewal
l
Ap
lica c
ión
Acc
ess
Co
ntr
ol
Autenticación Autorización
Usuarioregistrado
BienvenidoJavier L.
Deber seradministrador
Lo siento,no puedes
pasar
DESYMFONY.COM
security.yml
security: firewalls: {} access_control: {} providers: {} encoders: {}
app/config/security.yml
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Definimos un único firewall para la aplicación.
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Cobertura de nuestro firewall. Todas las URLs
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Aceptamos usuarios anónimos.
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Método de autenticación, formulario. Existen otras opciones.
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
La ruta para acceder al formulario de login
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Ruta para comprobar la autenticación del usuario. El formulario de login se envía a estaruta.
DESYMFONY.COM
security.yml
security: firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /check logout: path: /logout target: /
Información para “desautenticar” al usuario
DESYMFONY.COM
security.yml
security: firewalls: ## codigo anterior
access_control: { path: ^/perfil , roles: ROLE_USER }
La URL “/perfil” sólo es accesible al ROLE_USER
DESYMFONY.COM
security.yml
security: firewalls: access_control: providers: main: entity: class: Desymfony\DesymfonyBundle\Entity\Usuario property: email
Nombre de proveedor de usuarios. Podré tener más: memoria, base de datos, xml, ...
DESYMFONY.COM
security.yml
security: firewalls: access_control: providers: main: entity: class: Desymfony\DesymfonyBundle\Entity\Usuario property: email
Nuestro proveedor es una entidad.
DESYMFONY.COM
security.yml
security: firewalls: access_control: providers: main: entity: class: Desymfony\DesymfonyBundle\Entity\Usuario property: email
Entidad responsable de proveernos de usuarios.Para poder comportarse como tal deberá implementar UserInterface
DESYMFONY.COM
security.yml
security: firewalls: access_control: providers: main: entity: class: Desymfony\DesymfonyBundle\Entity\Usuario property: email
Propiedad que servirá como nombre de usuario
DESYMFONY.COM
security.yml
security: firewalls: access_control: providers: encoders: Desymfony\DesymfonyBundle\Entity\Usuario: sha512
Podemos definir encoders distintos para cada tipo de usuario.
DESYMFONY.COM
security.yml
Para saber más sobre todas las opciones de configuración
http://symfony.com/doc/2.0/reference/configuration/security.html
Security Configuration Reference
DESYMFONY.COM
Seguridad Qué vamos a hacer
● Crearemos la página de login para que el usuario se pueda autenticar
● Modificaremos la entidad Usuario para que sea un proveedor de usuarios válido
DESYMFONY.COM
Gracias.
@loalf
github.com/loalf
www.loalf.com