Ahora que entendemos acerca de las cookies y las sesiones express,
en este ejercicio, veamos las cookies en particular.
Veremos cómo podemos usar el middleware del analizador de cookies
para configurar y manejar cookies dentro de nuestra aplicación express.
Volviendo a nuestra aplicación ConFusion Server Express
en la que hemos estado trabajando hasta ahora,
notará en la parte superior que el analizador de cookies
ya está incluido en nuestra aplicación express.
Si necesita instalar explícitamente el analizador de cookies,
solo necesita escribir «npm install cookie-parser menos guardar».
Pero dado que nuestro Express Generator ya ha incluido
el analizador de cookies en nuestra aplicación express que hemos realizado andamios,
no necesitamos hacer ese paso en este ejercicio.
Por lo tanto, verá que el analizador de cookies ya está incluido allí,
y luego si se desplaza hacia abajo,
verá que en el código justo aquí,
verá que el analizador de cookies ya se ha incluido en el middleware allí.
Ahora, para este analizador de cookies,
vamos a utilizar cookies firmadas en este ejercicio.
Entonces, para este analizador de cookies,
voy a proporcionar una clave secreta como parámetro aquí.
La clave secreta podría ser cualquier cadena allí,
así que solo voy a suministrar una cadena como esta, diré 12345-67890.
No tiene que ser nada significativo,
es sólo una clave que puede ser utilizada por
nuestro analizador de cookies para cifrar
la información y firmar la cookie que se envía desde el servidor al cliente.
Por lo tanto, una vez que configuramos nuestro analizador de cookies para manejar cookies firmadas,
entonces dentro de la propia autorización,
para que vea que tenemos la autorización que hemos incorporado aquí.
Ahora, dentro de la autorización,
lo que vamos a hacer es,
la primera vez que el usuario intente acceder al servidor,
esperaremos que el usuario se autorice a sí mismo.
A partir de entonces, configuraremos la cookie en el lado del cliente desde el servidor y
, posteriormente, el cliente no tiene que
seguir enviando explícitamente la información básica de autenticación.
En su lugar, el cliente simplemente tendrá que incluir la cookie en la solicitud saliente.
Ya que estamos utilizando cookies firmadas aquí, entonces,
cuando la solicitud entrante entra,
entonces vamos a manejar eso dentro de la autorización.
Ahora, recuerde que ya hemos configurado el middleware de autorización aquí.
Por lo tanto, vamos a modificar este middleware de autorización para hacer uso de
cookies en lugar del encabezado de autorización.
Entonces, lo que haremos aquí es que,
diremos «console.log» y luego lo haremos,
«console.log (req.signedCookies)» para que veamos lo que realmente está
incluido en la cookie firmada aquí.
Ahora, también después de esto,
lo que haremos es decir, «¡Si (! req.signedCookies.user)». El
usuario será una propiedad que configuraremos
en la cookie firmada, ya que verá un
poco más adelante cómo configuraremos la cookie firmada.
Por lo tanto, si la solicitud entrante no incluye el campo de usuario en las cookies firmadas,
y entonces eso significa que el usuario aún no ha sido autorizado.
Entonces, en ese caso,
lo que haremos es esperar que el usuario se autentique a sí mismo.
Así que, entonces, haremos toda esta parte aquí.
Así que tenga en cuenta que ya habíamos hecho esto
antes donde estábamos manejando el encabezado de autenticación.
Así que tomaremos toda esta parte,
todo el camino hasta este «otro» aquí y luego incluiremos eso dentro aquí.
Así que, esencialmente, lo que estamos especificando aquí es que,
permítanme sangrarlo.
Como ve, soy muy particular sobre mi sangría
porque eso hace que el código sea más fácil de leer.
Así que dentro de esto si,
entonces este es el punto de cierre del si de este aquí.
Así que estamos diciendo que si la cookie firmada no contiene la propiedad del usuario en ella,
entonces esperamos que el usuario autorice incluyendo el encabezado de autorización.
Así que vamos a buscar el encabezado de autorización.
Si el encabezado de autorización no está disponible,
simplemente rechazaremos al usuario y le pediremos
que introduzca el nombre de usuario y la contraseña como hicimos en el ejercicio anterior.
Si el encabezado de autorización está incluido,
entonces procesaremos el encabezado de autorización tal como lo hicimos antes,
y si el usuario es un usuario autorizado,
recuerde que llamamos al siguiente para dejar que el usuario continúe.
Ahora en este punto,
lo que vamos a hacer es que vamos a decir,
vamos a configurar la cookie en este punto.
Así que aquí es donde usaremos la cookie res aquí.
Observe que la cookie no existe,
así que diremos «res.cookie».
Como puede ver, la cookie res en sí toma la primera cadena de nombre de valor, cadena de
valor y opciones, opciones de cookies.
Establezca el nombre de la cookie en valor con las opciones dadas y las opciones se incluyen aquí,
algunas opciones para la cookie aquí.
Simplemente voy a usar algunas de las opciones aquí.
Así que diremos, «res.cookie» y luego voy a configurar la cookie con el nombre de usuario.
Ahora note que esta es la razón por la que estoy
comprobando el req.signedcookies.user allí arriba.
Entonces diremos «res.cookie ('usuario',)» y
el campo de usuario lo configuraré en 'admin' y
luego lo configuraré para que sea una cookie firmada.
Así que voy a decir «firmado: verdadero».
Lo que significa que mi analizador de cookies se asegurará de
que esta cookie sea firmada y configurada.
Entonces, esta es la opción que configuré para la cookie res aquí.
Por lo tanto,
esto incluirá este nombre en particular en la cookie firmada con este valor particular.
Así que esa es la razón por la que puedo verificar ese valor aquí arriba.
Entonces, si esto no existe,
entonces, por supuesto, espero que el usuario se autentique mediante el uso de la autenticación básica,
y si la autenticación básica es exitosa,
entonces configuraré la cookie aquí y configuraré
el campo de cookie en el mensaje de respuesta saliente aquí y
esto pedirá que el para configurar la cookie en el lado del cliente y luego
todas las solicitudes posteriores incluirán esta cookie en la solicitud del cliente.
Entonces, así es como estoy manejando el hecho cuando el cookie.user no existe.
Ahí. Si existe,
entonces la parte más,
por lo que significa que la cookie firmada ya
existe y la propiedad del usuario está definida en eso,
entonces en el otro,
lo que verificaré es
si req.signedCookies.user es admin.
Entonces, eso significa que la cookie firmada contiene la información correcta.
Entonces, diré lo siguiente.
Entonces, lo que significa que permitirá que la solicitud pase.
De lo contrario, esta cookie no es válida porque no contiene este valor correcto.
Eso significa que esto es un error.
Entonces, en este caso,
diremos que no está autenticado,
y luego simplemente causaremos el error en este punto.
Ahora, no vamos a pedir al usuario
la sesión porque eso debe haberse hecho antes.
Ahora, normalmente, esto no sucedería
porque si la cookie ya está configurada en el lado del cliente,
entonces debe incluir el valor correcto de todos modos.
Pero en aras de la exhaustividad,
también he incluido la comprobación de errores de otro aquí en este punto. Eso es todo.
Con esta configuración, hemos convertido
nuestra aplicación express en una que maneja las cookies aquí.
Nota de nuevo, permítanme llamar su atención sobre lo que estamos haciendo aquí una vez más.
Aquí, estamos comprobando para asegurarnos de
que la propiedad del usuario en las cookies firmadas no existe,
o incluso la propia cookie firmada no existe.
Entonces, esperaremos que se haga la autorización básica.
Si la autorización es exitosa,
entonces voy a configurar la cookie usando el res.cookie aquí.
Luego, todas las solicitudes posteriores llevarán la cookie firmada de todos modos,
y luego verificaré para ver que la cookie firmada es
una cookie firmada válida y contiene la propiedad del usuario que se establece igual a admin.
Si lo hace, entonces este es un acceso autorizado,
por lo que permitirá seguir adelante.
Si no, entonces planteo un error en este punto.
Corrección menor, las nuevas versiones de Node.js esperan que lo use como
nuevo búfer. From en lugar de nuevo Buffer para tratar algunos problemas de seguridad.
Así que simplemente corrija esta línea a un nuevo búfer.from. Eso es todo.
Vamos a guardar los cambios y luego vamos a ver nuestra aplicación en ese cartero.
Si el servidor anterior se está ejecutando,
basta con detenerlo escribiendo Control C
y, a continuación, reinicie el servidor diciendo npm start.
Por supuesto, asegúrese de que su servidor MongoDB está en funcionamiento.
De lo contrario, el servidor Express no se iniciará correctamente.
Así que una vez que se inicie su servidor express,
entonces vamos a nuestro cartero e intentemos conectarnos al servidor.
Y voy a demostrar algunos aspectos sobre cómo se manejan las cookies.
Ahora, yendo a Cartero,
déjame borrar toda esta información
de mi Cartero y luego empezaremos con lo básico.
Así que déjame intentar acceder al localhost: 3000/platos.
Ahora, después de haber limpiado todo,
enviaré la solicitud y guardaré.
Y así, desde el lado del servidor,
dice que no estás autenticado.
Luego, cuando miras el encabezado,
esto me está pidiendo que me autentique usando WWW-Authenticate.
Así que ahora, permítanme entrar en la autorización y luego configurar la autorización básica,
y luego configuraré la autorización como administrador,
y luego contraseña, y luego actualizar la solicitud para que el encabezado
ahora contenga el encabezado de autorización aquí con la información allí.
Y luego déjame enviar la solicitud de Git en esta parte.
Si envío la solicitud de Git,
entonces en respuesta, verá que la solicitud de Git fue exitosa.
Tenga en cuenta también algunas cosas más.
Verá que el estado es 200 OK.
Tenga en cuenta también que una cookie se ha configurado en nuestro lado del cliente dentro de Postman aquí.
Esta cookie contiene información.
Veremos los detalles de la galleta en un minuto.
Luego, cuando miras el encabezado,
ves en el encabezado este valor aquí diciendo Set-Cookie,
y luego esta información que viene aquí.
Ahora, si lo miras cuidadosamente,
verás algo aquí dice usuario igual a,
y luego ves este valor aquí, admin allí.
Por lo tanto, usted nota que algo ha sido encerrado dentro de la cookie.
Si desea examinar realmente la cookie,
vaya aquí en Postman y luego haga clic en estas teclas,
y luego esto le mostrará todas las cookies que se han configurado en este lado del cliente.
Entonces, en particular, ahora permítanme borrar todas estas otras galletas.
Probablemente he usado algunos de estos por alguna otra razón.
Así que déjame limpiar esas galletas.
De todos modos, si los
ves, puedes dejarlos ahí.
No es un gran problema.
Concéntrese específicamente en el host local aquí,
y luego verá esta cookie aquí.
Simplemente haga clic en la cookie,
y luego verá el valor real dentro de la cookie que se almacena allí.
A continuación, también la fecha de caducidad para esa configuración de cookies aquí.
Ahora, este valor será exactamente lo que vio en
la cookie de conjunto que entró desde el lado del servidor.
Ahora, esto también significa que en las solicitudes posteriores que entran,
por lo que incluso si borro mi autorización,
e incluso si elimino el encabezado de autorización,
porque la cookie se ha configurado,
esta cookie se ha configurado en mi host local,
cada solicitud posterior va a este servidor incluirá esta cookie.
Entonces, aunque no tendría los encabezados configurados allí,
si envío la solicitud,
notarás que la solicitud de Git funciona como antes sin ningún problema,
debido al hecho de que cada solicitud saliente incluirá automáticamente
esta cookie en la solicitud saliente de mi Postman aquí.
Esto demuestra el uso de cookies en nuestra aplicación.
Con esto, hemos visto cómo se pueden configurar y
procesar cookies en nuestro servidor express utilizando el analizador de cookies,
y cómo podemos configurar cookies firmadas.
Este es un buen momento para que hagas una confirmación de git con las cookies de mensaje.