Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Añadir una sesión identificada en Symfony - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 17 de octubre de 2020 por Amadeo M.

177 visualizaciones

Descargar la transcripción

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 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:
es
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid