Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Añadir una sesión identificada en Symfony - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
En la aplicación que estamos realizando nos gustaría que además pudiéramos acceder, abriendo una sesión, a toda esta gestión de usuarios y departamentos.
00:00:01
Para ello vamos a crear el sistema que tiene de autentificación Symfony.
00:00:11
bueno, vamos a empezar poco a poco
00:00:16
con el terminal y volvemos
00:00:19
a nuestro famoso
00:00:21
a nuestro famoso
00:00:22
entorno de
00:00:25
de
00:00:27
de console
00:00:29
¿vale? puedo dejar esto funcionando
00:00:31
o cerrarlo y después arrancar
00:00:33
el servidor como Mara ya quiera ¿vale?
00:00:35
yo de momento voy a cerrar
00:00:37
esto y simplemente con un control C
00:00:39
pues paro mi servidor
00:00:41
y voy a hacerlo grande
00:00:42
para que veamos todo bien
00:00:45
Y vamos a ver qué nos propone Symfony Console, qué nos propone para gestionar el tema de accesos seguros a nuestra aplicación.
00:00:46
bueno, uno empieza a ver los make que tenemos por aquí
00:01:02
B1 que dice makeAuth
00:01:05
que tiene aspecto de identificador
00:01:08
y hay otro por aquí que es makeUser
00:01:10
que es para crear una clase de seguridad
00:01:15
bueno, pues vamos a utilizar primero makeUser
00:01:19
y vamos a generar una tabla
00:01:23
para almacenar esta información
00:01:25
entonces vamos a teclear console.makeUser
00:01:27
Y dice, ¿cómo se va a llamar esa clase?
00:01:31
¿Por qué no podemos llamarla user?
00:01:36
Como dice, por ejemplo, user
00:01:38
Dice, ¿la queremos almacenar en la misma base de todas que estamos trabajando?
00:01:39
Pues sí
00:01:43
Dice, ¿cuál va a ser el campo, el único que vamos a visualizar?
00:01:43
Pues vamos a llamarle, por ejemplo, username
00:01:49
Puede ser un buen nombre, username
00:01:52
Dice, ¿necesita hacer un hash de Power?
00:01:54
lo digo sí, si lo necesitamos
00:02:02
y ya está creada, en este momento ya
00:02:04
tenemos creada esta aplicación
00:02:06
mucho cuidado porque
00:02:09
está claro que todavía no está añadida
00:02:10
¿vale? esto va a ser algo que
00:02:13
tendremos que hacer después
00:02:14
que es hacer una migración para
00:02:16
actualizar tanto esto como
00:02:18
actualizar el esquema
00:02:20
bueno, podríamos hacerlo en este momento
00:02:21
vamos a actualizar el esquema, si volvemos a
00:02:24
la consola, vamos a hacerlo
00:02:26
y vemos que por aquí
00:02:29
podemos ya directamente
00:02:32
actualizar nuestro esquema
00:02:33
por aquí está, update, ¿de acuerdo?
00:02:36
entonces, bueno, por si surge algún problema
00:02:40
vamos a hacerlo ya y así no se nos olvida
00:02:42
muy bien, lo mismo, nos avisa de que no lo hagamos
00:02:45
en un ambiente de producción y
00:02:49
dice que hay un montón de cosas que tengamos cuidado
00:02:51
para actualizar, etcétera, etcétera
00:02:55
dice, hay que hacer todo esto, muy bien, pues vamos a decirle
00:02:58
que nos ponga un menor
00:03:01
force, por si no he podido
00:03:03
y ahora sí, ahora ya
00:03:06
nos lo actualiza, ¿vale?
00:03:07
Vale, perfecto
00:03:11
pues nada, en este momento ya tenemos
00:03:12
el user
00:03:14
introducido
00:03:15
además
00:03:16
ahora aparte de tener esta
00:03:18
tabla que tenemos aquí
00:03:21
esta entidad
00:03:23
que tenemos aquí de user
00:03:25
voy a quitar esto
00:03:28
para que lo veamos
00:03:30
¿vale? vemos que ya ha incluido
00:03:30
una serie de cosas que son los roles
00:03:34
¿qué va a ser este usuario?
00:03:35
¿va a ser administrador? ¿va a ser simplemente un usuario
00:03:37
de la aplicación? ¿qué va a ser?
00:03:40
¿de acuerdo? ya veremos como
00:03:42
todo esto podemos ir
00:03:43
rellenando
00:03:46
además nos hace falta introducir
00:03:47
un login de la aplicación
00:03:49
como entramos en la aplicación
00:03:52
y para ello
00:03:54
seguro que tenemos
00:03:56
ya viendo esto
00:03:57
seguro que tenemos algo que nos permite crear la autorización
00:03:59
para entrar, por aquí había algo que era make
00:04:03
vamos a subir un pelín más, emplear
00:04:06
y vamos a ver un make de autorizaciones
00:04:10
bueno, pues vamos a copiar esta opción
00:04:15
me vengo por aquí, y me dice que si vamos a tener
00:04:18
un autenticador con un formulario de login, digo que sí
00:04:25
y dice, ¿cómo lo vamos a llamar a nuestro
00:04:29
identificador? Bueno, pues por ejemplo, le llamamos
00:04:34
LoginAuthenticator
00:04:37
¿vale? Vamos a llamarle así
00:04:41
dice, ¿cuál va a ser el nombre del controlador de seguridad?
00:04:44
Pues este me parece correcto, SecurityController
00:04:50
dice, ¿vamos a generar un logout? Digo que sí
00:04:54
y en este momento ya lo tenemos
00:04:57
realizado
00:05:00
muy bien
00:05:01
bueno, ¿cómo enganchamos ahora para que salga
00:05:03
nuestro login? pues es curioso
00:05:08
porque si nosotros tecleamos aquí la ruta
00:05:10
login directamente
00:05:12
nos aparece un login
00:05:13
todavía con esta cabecera
00:05:16
es decir, ya empezamos a tener algo
00:05:18
por supuesto que quisiéramos entrar
00:05:20
pues dice que el usuario
00:05:21
no puede ser encontrado y no puede
00:05:24
efectivamente, ¿vale?
00:05:26
con lo cual lo primero que vamos a hacer es poner como raíz
00:05:28
de nuestra aplicación la entrada por este sitio
00:05:30
vamos a ir por aquí, vamos a ir a nuestro editor y vamos a ir
00:05:33
al fichero de rutas, aquel que teníamos, nuestra ruta que teníamos era
00:05:39
el controlador de empleado índice, bueno pues ahora queremos que sea
00:05:43
nuestro controlador de seguridad y dentro de este
00:05:47
queremos que sea login, de acuerdo
00:05:53
guardamos esto y algo ahora hemos conseguido, lo primero que hemos conseguido
00:05:56
es que la ruta efectivamente viene aquí
00:06:01
por supuesto si yo le doy ahora mismo
00:06:04
a cualquier cosa de aquí, esto no va a ningún lado
00:06:07
y el empleado sigue pudiendo entrar
00:06:11
no hay ningún control de momento
00:06:15
de momento no tenemos control, podemos ir a cualquier opción
00:06:17
vayamos a login o no vayamos, podemos ir a cualquier opción
00:06:22
y es algo que no debería ser correcto
00:06:26
¿de acuerdo?
00:06:30
Entonces, lo que vamos a empezar es a proteger la aplicación. ¿Cómo lo hacemos? Pues nos vamos directamente a la configuración y dentro de este, a la directory of packages, en el cual tenemos un fichero que se llama security.
00:06:30
Bueno, este fichero ya nos ha dicho que utiliza la entidad de usuario con un algoritmo automático de encriptación, que la propiedad que va a visualizar es username, todo eso se lo hemos dicho antes nosotros, que el autentificador está en LoginAuthenticator, también se lo dijimos nosotros, y dice qué control vamos a tener.
00:06:47
Digo, bueno, pues, ¿qué control le vamos a poner a esto? Digo, pues, por ejemplo, este de aquí. Vamos a decirle que en la ruta lo que sea empleado pueda ir un usuario, en la ruta lo que sea departamento pueda ir un usuario. ¿De acuerdo? Bueno, voy a borrar todo esto de aquí, que me sobran líneas, y voy a generarlo.
00:07:07
vamos a ver ahora que nos ocurre
00:07:29
voy a generar esto otra vez
00:07:32
esto efectivamente
00:07:34
está aquí
00:07:36
yo entro y como esto no existe no puedo hacer nada
00:07:37
pero voy a ir a departamentos
00:07:40
y no me deja entrar
00:07:41
¿vale?
00:07:43
y voy a empleados y no me deja entrar
00:07:45
es decir, de momento
00:07:48
no me deja entrar a nada de la aplicación
00:07:50
si yo no estoy identificado
00:07:52
ya logra protegerlo
00:07:54
ahora tendré que generar usuarios
00:07:55
bueno, estamos viendo
00:07:57
que aquí no nos deja entrar, vemos temas de seguridad
00:08:00
y tendremos que generar un método para que nos deje entrar
00:08:03
tendremos que crear usuarios de esta aplicación
00:08:07
de momento ninguno es concreto
00:08:09
vamos a ver que opciones nos da
00:08:12
Symfony para poder realizar todo esto
00:08:14
voy a abrir la aplicación
00:08:18
y vamos a ver
00:08:19
que nos da Symfony
00:08:22
que nos permita crear
00:08:25
vamos a la consola
00:08:27
y vamos a ver si hay algo que nos pueda permitir
00:08:28
vemos algo de security
00:08:31
codificar power
00:08:33
pero realmente lo que quiero es algo para registrar
00:08:34
para registrar
00:08:37
un formulario
00:08:39
de nuevos usuarios
00:08:41
voy a ver si esto que hay ahí
00:08:42
registration form nos puede valer
00:08:44
me voy aquí
00:08:47
y ejecuto
00:08:48
digo, quiero añadir
00:08:51
una entidad única
00:08:53
a la anotación user
00:08:55
para que no se puedan crear nuevos usuarios
00:08:57
porque de momento digo que sí
00:09:00
quieres enviar un email
00:09:01
bueno, en esta aplicación no nos tenemos email
00:09:04
o sea, vamos a decirle que no
00:09:06
quiere que automáticamente
00:09:07
se autentifique el usuario
00:09:11
después del registro, digo que sí
00:09:14
y en este momento ya tendríamos
00:09:16
una ruta
00:09:18
que registre
00:09:20
para poder añadir nuevos usuarios
00:09:21
vamos a ver si es cierto
00:09:24
voy a ir aquí
00:09:25
Y voy a generar una aplicación que se llame Register.
00:09:27
Va a fallar porque no hemos arrancado la aplicación, lógicamente.
00:09:38
¿De acuerdo?
00:09:42
Entonces sería bueno volver a arrancar la aplicación.
00:09:43
Ahí la tengo.
00:09:46
Vamos a arrancarla.
00:09:47
Vale, ya está en uso.
00:09:49
Voy a recargar esto.
00:09:51
Y efectivamente, aquí me está permitiendo registrar un usuario.
00:09:56
En este caso estoy poniendo usuario 1, de hardware estoy poniendo clave 1, voy a decir que estoy de acuerdo con los términos de registro y voy a registrar a este usuario, ¿vale? Bueno, ha entrado automáticamente desde ahí, se me ha ido directamente a la lista de empleados, que era la aplicación estándar de ruta, ¿vale?
00:10:02
vamos a ver si ahora
00:10:22
yo tecleo aquí login
00:10:25
y que me deja
00:10:27
donde me deja entrar
00:10:30
bueno, me está diciendo que estás
00:10:31
dentro de la aplicación
00:10:34
como usuario 1
00:10:37
que me puedo salir
00:10:38
y voy a darle
00:10:40
que vaya al usuario 2
00:10:42
vale
00:10:44
entonces me dice el usuario 2
00:10:45
dice no puede ser
00:10:48
siga usted como usuario 1
00:10:50
y hacemos un logout
00:10:52
y vamos a ver que efectivamente estamos ahí
00:10:53
si voy a departamentos no me deja entrar
00:10:56
si voy a empleados no me deja entrar
00:11:00
porque todavía no estoy incluido dentro del fichero
00:11:01
si pincho en signin
00:11:05
pues efectivamente ya me deja entrar aquí y aquí
00:11:08
sería muy interesante tener aquí una opción
00:11:12
para salir de la sesión y cerrarla
00:11:15
bien, nuestra aplicación está funcionando
00:11:17
de hecho tenemos esto aquí
00:11:21
podemos entrar en ella, vemos que nos da un error, aquí dice que hay algo que hacer
00:11:24
y es crear aquí en este programa, incluir una ruta que me redireccione cuando entramos
00:11:31
bueno, pues vamos a ello, vamos a ello directamente, vamos a ir a esta línea
00:11:40
y vamos a incluir aquí
00:11:46
que me redireccione, he seguido el ejemplo que tenemos aquí arriba
00:11:49
a la página empleado index cuando entremos. Voy a grabar esta información
00:11:54
vuelvo a ejecutar y ahora cuando cargue
00:11:58
efectivamente mira. Ya estoy dentro, pero
00:12:04
excepto por este mensaje de aquí, que sé que estoy en usuario 1, yo no veo en mi aplicación
00:12:08
que esté en ningún sitio, con lo cual me convendría poner aquí
00:12:13
salir en este menú de aquí arriba. Vamos a hacerlo yendo a menú HTML al template
00:12:16
y vamos a escribir esta cuestión de aquí. Vamos a escribir simplemente barrita y que
00:12:25
vaya al logout cuando queramos salir. Bueno, pues ahora si ejecuto, efectivamente ya me
00:12:31
aparece esta opción, aunque todavía no me dice quién soy yo. Voy a darle a salir y
00:12:39
efectivamente estoy fuera y ya estoy aquí como anónimo
00:12:46
lo puedo ver aquí abajo
00:12:49
lo único que ocurre es que me siga apareciendo este menú
00:12:50
que no tiene sentido si no estoy todavía
00:12:53
dentro de la aplicación
00:12:55
con lo cual voy a ver si puedo
00:12:56
que solo me salga este menú cuando estoy ya
00:12:58
logueado
00:13:01
vamos a ello
00:13:02
podría incluir incluso el nombre
00:13:03
con el que estoy logueado
00:13:07
y solamente
00:13:10
que muestre este div
00:13:11
esta clase menú
00:13:14
solamente cuando estoy con un usuario identificado
00:13:15
voy a guardarlo y ahora si entro
00:13:19
efectivamente ya no me aparece el menú
00:13:23
una vez que yo me identifique
00:13:25
pues ya vemos que efectivamente sale las dos opciones
00:13:28
usuario y salir
00:13:33
¿qué me quedaría por hacer?
00:13:35
pues me quedaría una de las cuestiones más importantes
00:13:37
que esta primera pantalla de entrar a la aplicación
00:13:40
fuera un poquito más elegante
00:13:43
para hacer más elegante esto
00:13:45
pues vamos a ir
00:13:51
al formulario donde se genere
00:13:52
lógicamente será aquí
00:13:57
en security login html
00:13:59
twist
00:14:01
y aquí pues bueno
00:14:02
nos aparece un bloque de título
00:14:05
que podemos apreciar
00:14:07
que está aquí arriba, login
00:14:09
que seguramente no lo queremos poner porque seguramente
00:14:10
queremos poner el que había en base
00:14:13
con lo cual directamente lo borramos
00:14:15
y aquí aparecen montones de mensajes de varias cosas
00:14:17
lo más importante pues es lo que vemos
00:14:21
aquí hay un mensajito parecido al que queríamos poner nosotros antes
00:14:24
que podemos traducir incluso por si en algún momento apareciera
00:14:29
de momento no voy a hacerlo
00:14:34
y aquí vamos a poner ingreso en la usuario
00:14:35
username, usuario
00:14:46
y el password, pues claro
00:14:50
con esto
00:14:52
prácticamente ya habré traducido
00:14:54
lo que se visualiza en la aplicación
00:14:56
de todo modo voy a echar
00:14:58
una pequeña mirada
00:14:59
y efectivamente todavía me falta
00:15:02
el botón de
00:15:04
entrar
00:15:06
creo que ya con esto sería suficiente
00:15:07
para la parte de aplicación que vamos a ver
00:15:12
y vamos a ver si es cierto
00:15:14
que eso acaba, y efectivamente
00:15:16
ingreso en la aplicación, tenemos nuestro mantenimiento de empleados, usuario
00:15:19
clave y entrar. ¿De acuerdo? Si quisiéramos que esto no apareciera en una línea
00:15:23
sino que aparecieran varias o cualquier otra cuestión, pues no tendríamos más que
00:15:27
cambiarlo o modificar el formulario. Por ejemplo,
00:15:31
vamos a hacerlo un instante ya que estamos aquí, pues después del
00:15:35
label que aparece aquí, podemos
00:15:39
saltar y aquí igual saltar
00:15:42
Y si ahora venimos aquí, pues efectivamente nos está introduciendo esa información.
00:15:47
- Idioma/s:
- Autor/es:
- Amadeo Mora
- Subido por:
- Amadeo M.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 177
- Fecha:
- 17 de octubre de 2020 - 15:23
- Visibilidad:
- Público
- Centro:
- IES CLARA DEL REY
- Duración:
- 15′ 59″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1364x768 píxeles
- Tamaño:
- 77.92 MBytes