Você está na página 1de 31

Tutorial #4

Formularios y Seguridad.
Javier Lpez

JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLN DESYMFONY.COM

Importante
Algunas partes de este presentacin no se pueden
entender bien sin ver el vdeo de su imparticin
Puedes ver el vdeo en

http://bit.ly/sf-tutorial4

Puedes descargar el cdigo de partida para la presentacin en

https://github.com/desymfony/desymfony/tree/tutorial4

DESYMFONY.COM

Javier Lpez

Quin es este tipo

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

DESYMFONY.COM

Formularios

DESYMFONY.COM

Formularios

Algunas apuntes

Ms de dos aos de desarrollo

Principal razn del retraso de la versin 2

Librera escrita desde 0

Olvida casi todo lo que conocias de symfony 1.4

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

Seguridad

DESYMFONY.COM

Seguridad

Algunas apuntes

Las 4 palabras mgicas para entender la seguridad:

Firewalls (Autenticacin)

Access Control (Autorizacin)

Providers (Dnde estn mi usuarios)

Encoders (Cmo se procesan las contraseas)

DESYMFONY.COM

Aplicacin

Access Control

Cliente

El proceso en imgenes

Firewall

Seguridad

Autenticacin

Autorizacin

DESYMFONY.COM

Accediendo a una URL no protegida

Firewall

Cliente

No hay reglas
Para /

Aplicacin

Annimos
bienvenidos!

Soy annimo

Access Control

Seguridad

Autenticacin

Autorizacin

DESYMFONY.COM

Accediendo a una URL protegida

Firewall

Cliente

/perfil

Debes ser
usuario registrado

Lo siento
haz login

Autenticacin

Aplicacin

Annimos
bienvenidos!

Soy annimo

Access Control

Seguridad

Autorizacin

DESYMFONY.COM

Accediendo a una URL protegida sin permisos

Deber ser
administrador

Lo siento,
no puedes
pasar

Autenticacin

Aplicacin

Cliente

/admin

Bienvenido
Javier L.

Firewall

Usuario
registrado

Access Control

Seguridad

Autorizacin

DESYMFONY.COM

security.yml
app/config/security.yml
security:
firewalls:{}
access_control:{}
providers:{}
encoders:{}

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 aplicacin.

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 annimos.

DESYMFONY.COM

security.yml
security:
firewalls:
secured_area:
pattern:^/
anonymous:~
form_login:
login_path:/login
check_path:/check
logout:
path:/logout
target:/
Mtodo de autenticacin, 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 autenticacin del usuario. El formulario de login se enva a esta
ruta.

DESYMFONY.COM

security.yml
security:
firewalls:
secured_area:
pattern:^/
anonymous:~
form_login:
login_path:/login
check_path:/check
logout:
path:/logout
target:/
Informacin para desautenticar al usuario

DESYMFONY.COM

security.yml
security:
firewalls:
##codigoanterior
access_control:
{path:^/perfil,roles:ROLE_USER}

La URL /perfil slo 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 ms: 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 ms sobre todas las opciones de configuracin

Security Configuration Reference


http://symfony.com/doc/2.0/reference/configuration/security.html

DESYMFONY.COM

Seguridad

Qu vamos a hacer

Crearemos la pgina de login para que el usuario se pueda


autenticar

Modificaremos la entidad Usuario para que sea un proveedor


de usuarios vlido

DESYMFONY.COM

Gracias.
@loalf
github.com/loalf
www.loalf.com

DESYMFONY.COM

Você também pode gostar