1
00:00:03,680 --> 00:00:08,435
Ahora que entendemos acerca de las cookies y las sesiones express,

2
00:00:08,435 --> 00:00:11,895
en este ejercicio, veamos las cookies en particular.

3
00:00:11,895 --> 00:00:15,490
Veremos cómo podemos usar el middleware del analizador de cookies

4
00:00:15,490 --> 00:00:22,185
para configurar y manejar cookies dentro de nuestra aplicación express.

5
00:00:22,185 --> 00:00:26,900
Volviendo a nuestra aplicación ConFusion Server Express

6
00:00:26,900 --> 00:00:28,695
en la que hemos estado trabajando hasta ahora,

7
00:00:28,695 --> 00:00:32,420
notará en la parte superior que el analizador de cookies

8
00:00:32,420 --> 00:00:37,200
ya está incluido en nuestra aplicación express.

9
00:00:37,200 --> 00:00:40,150
Si necesita instalar explícitamente el analizador de cookies,

10
00:00:40,150 --> 00:00:45,230
solo necesita escribir «npm install cookie-parser menos guardar».

11
00:00:45,230 --> 00:00:48,740
Pero dado que nuestro Express Generator ya ha incluido

12
00:00:48,740 --> 00:00:52,810
el analizador de cookies en nuestra aplicación express que hemos realizado andamios,

13
00:00:52,810 --> 00:00:56,210
no necesitamos hacer ese paso en este ejercicio.

14
00:00:56,210 --> 00:00:59,430
Por lo tanto, verá que el analizador de cookies ya está incluido allí,

15
00:00:59,430 --> 00:01:03,910
y luego si se desplaza hacia abajo,

16
00:01:03,910 --> 00:01:08,290
verá que en el código justo aquí,

17
00:01:08,290 --> 00:01:13,925
verá que el analizador de cookies ya se ha incluido en el middleware allí.

18
00:01:13,925 --> 00:01:16,330
Ahora, para este analizador de cookies,

19
00:01:16,330 --> 00:01:19,885
vamos a utilizar cookies firmadas en este ejercicio.

20
00:01:19,885 --> 00:01:21,680
Entonces, para este analizador de cookies,

21
00:01:21,680 --> 00:01:27,580
voy a proporcionar una clave secreta como parámetro aquí.

22
00:01:27,580 --> 00:01:29,990
La clave secreta podría ser cualquier cadena allí,

23
00:01:29,990 --> 00:01:37,450
así que solo voy a suministrar una cadena como esta, diré 12345-67890.

24
00:01:37,450 --> 00:01:39,915
No tiene que ser nada significativo,

25
00:01:39,915 --> 00:01:48,650
es sólo una clave que puede ser utilizada por

26
00:01:48,650 --> 00:01:53,160
nuestro analizador de cookies para cifrar

27
00:01:53,160 --> 00:01:59,560
la información y firmar la cookie que se envía desde el servidor al cliente.

28
00:01:59,560 --> 00:02:05,775
Por lo tanto, una vez que configuramos nuestro analizador de cookies para manejar cookies firmadas,

29
00:02:05,775 --> 00:02:08,805
entonces dentro de la propia autorización,

30
00:02:08,805 --> 00:02:13,555
para que vea que tenemos la autorización que hemos incorporado aquí.

31
00:02:13,555 --> 00:02:15,130
Ahora, dentro de la autorización,

32
00:02:15,130 --> 00:02:16,735
lo que vamos a hacer es,

33
00:02:16,735 --> 00:02:23,385
la primera vez que el usuario intente acceder al servidor,

34
00:02:23,385 --> 00:02:29,870
esperaremos que el usuario se autorice a sí mismo.

35
00:02:29,870 --> 00:02:37,360
A partir de entonces, configuraremos la cookie en el lado del cliente desde el servidor y

36
00:02:37,360 --> 00:02:41,350
, posteriormente, el cliente no tiene que

37
00:02:41,350 --> 00:02:45,420
seguir enviando explícitamente la información básica de autenticación.

38
00:02:45,420 --> 00:02:53,335
En su lugar, el cliente simplemente tendrá que incluir la cookie en la solicitud saliente.

39
00:02:53,335 --> 00:02:56,650
Ya que estamos utilizando cookies firmadas aquí, entonces,

40
00:02:56,650 --> 00:03:01,010
cuando la solicitud entrante entra,

41
00:03:01,010 --> 00:03:04,490
entonces vamos a manejar eso dentro de la autorización.

42
00:03:04,490 --> 00:03:08,885
Ahora, recuerde que ya hemos configurado el middleware de autorización aquí.

43
00:03:08,885 --> 00:03:12,980
Por lo tanto, vamos a modificar este middleware de autorización para hacer uso de

44
00:03:12,980 --> 00:03:17,445
cookies en lugar del encabezado de autorización.

45
00:03:17,445 --> 00:03:20,910
Entonces, lo que haremos aquí es que,

46
00:03:20,910 --> 00:03:24,710
diremos «console.log» y luego lo haremos,

47
00:03:30,340 --> 00:03:33,140
«console.log (req.signedCookies)» para que veamos lo que realmente está

48
00:03:33,140 --> 00:03:35,790
incluido en la cookie firmada aquí.

49
00:03:35,790 --> 00:03:38,070
Ahora, también después de esto,

50
00:03:38,070 --> 00:03:46,275
lo que haremos es decir, «¡Si (! req.signedCookies.user)». El

51
00:03:46,275 --> 00:03:51,635
usuario será una propiedad que configuraremos

52
00:03:51,635 --> 00:03:54,440
en la cookie firmada, ya que verá un

53
00:03:54,440 --> 00:03:57,520
poco más adelante cómo configuraremos la cookie firmada.

54
00:03:57,520 --> 00:04:05,600
Por lo tanto, si la solicitud entrante no incluye el campo de usuario en las cookies firmadas,

55
00:04:05,600 --> 00:04:09,640
y entonces eso significa que el usuario aún no ha sido autorizado.

56
00:04:09,640 --> 00:04:11,990
Entonces, en ese caso,

57
00:04:11,990 --> 00:04:18,195
lo que haremos es esperar que el usuario se autentique a sí mismo.

58
00:04:18,195 --> 00:04:23,740
Así que, entonces, haremos toda esta parte aquí.

59
00:04:23,740 --> 00:04:27,890
Así que tenga en cuenta que ya habíamos hecho esto

60
00:04:27,890 --> 00:04:32,105
antes donde estábamos manejando el encabezado de autenticación.

61
00:04:32,105 --> 00:04:34,630
Así que tomaremos toda esta parte,

62
00:04:34,630 --> 00:04:41,805
todo el camino hasta este «otro» aquí y luego incluiremos eso dentro aquí.

63
00:04:41,805 --> 00:04:48,260
Así que, esencialmente, lo que estamos especificando aquí es que,

64
00:04:49,110 --> 00:04:51,750
permítanme sangrarlo.

65
00:04:51,750 --> 00:04:55,100
Como ve, soy muy particular sobre mi sangría

66
00:04:55,100 --> 00:04:59,005
porque eso hace que el código sea más fácil de leer.

67
00:04:59,005 --> 00:05:00,740
Así que dentro de esto si,

68
00:05:00,740 --> 00:05:04,990
entonces este es el punto de cierre del si de este aquí.

69
00:05:04,990 --> 00:05:11,600
Así que estamos diciendo que si la cookie firmada no contiene la propiedad del usuario en ella,

70
00:05:11,600 --> 00:05:17,960
entonces esperamos que el usuario autorice incluyendo el encabezado de autorización.

71
00:05:17,960 --> 00:05:20,090
Así que vamos a buscar el encabezado de autorización.

72
00:05:20,090 --> 00:05:22,760
Si el encabezado de autorización no está disponible,

73
00:05:22,760 --> 00:05:28,190
simplemente rechazaremos al usuario y le pediremos

74
00:05:28,190 --> 00:05:34,120
que introduzca el nombre de usuario y la contraseña como hicimos en el ejercicio anterior.

75
00:05:34,120 --> 00:05:36,600
Si el encabezado de autorización está incluido,

76
00:05:36,600 --> 00:05:41,165
entonces procesaremos el encabezado de autorización tal como lo hicimos antes,

77
00:05:41,165 --> 00:05:44,565
y si el usuario es un usuario autorizado,

78
00:05:44,565 --> 00:05:49,620
recuerde que llamamos al siguiente para dejar que el usuario continúe.

79
00:05:49,620 --> 00:05:51,480
Ahora en este punto,

80
00:05:51,480 --> 00:05:56,685
lo que vamos a hacer es que vamos a decir,

81
00:05:56,685 --> 00:06:00,380
vamos a configurar la cookie en este punto.

82
00:06:00,380 --> 00:06:04,725
Así que aquí es donde usaremos la cookie res aquí.

83
00:06:04,725 --> 00:06:07,880
Observe que la cookie no existe,

84
00:06:07,880 --> 00:06:10,125
así que diremos «res.cookie».

85
00:06:10,125 --> 00:06:15,275
Como puede ver, la cookie res en sí toma la primera cadena de nombre de valor, cadena de

86
00:06:15,275 --> 00:06:19,060
valor y opciones, opciones de cookies.

87
00:06:19,060 --> 00:06:25,820
Establezca el nombre de la cookie en valor con las opciones dadas y las opciones se incluyen aquí,

88
00:06:25,820 --> 00:06:27,410
algunas opciones para la cookie aquí.

89
00:06:27,410 --> 00:06:31,040
Simplemente voy a usar algunas de las opciones aquí.

90
00:06:31,040 --> 00:06:37,500
Así que diremos, «res.cookie» y luego voy a configurar la cookie con el nombre de usuario.

91
00:06:37,680 --> 00:06:41,890
Ahora note que esta es la razón por la que estoy

92
00:06:41,890 --> 00:06:45,400
comprobando el req.signedcookies.user allí arriba.

93
00:06:45,400 --> 00:06:51,380
Entonces diremos «res.cookie ('usuario',)» y

94
00:06:51,380 --> 00:06:56,290
el campo de usuario lo configuraré en 'admin' y

95
00:06:56,290 --> 00:07:01,390
luego lo configuraré para que sea una cookie firmada.

96
00:07:01,390 --> 00:07:03,725
Así que voy a decir «firmado: verdadero».

97
00:07:03,725 --> 00:07:06,295
Lo que significa que mi analizador de cookies se asegurará de

98
00:07:06,295 --> 00:07:10,120
que esta cookie sea firmada y configurada.

99
00:07:10,120 --> 00:07:14,290
Entonces, esta es la opción que configuré para la cookie res aquí.

100
00:07:14,290 --> 00:07:16,360
Por lo tanto,

101
00:07:16,360 --> 00:07:22,300
esto incluirá este nombre en particular en la cookie firmada con este valor particular.

102
00:07:22,300 --> 00:07:26,160
Así que esa es la razón por la que puedo verificar ese valor aquí arriba.

103
00:07:26,160 --> 00:07:27,770
Entonces, si esto no existe,

104
00:07:27,770 --> 00:07:33,620
entonces, por supuesto, espero que el usuario se autentique mediante el uso de la autenticación básica,

105
00:07:33,620 --> 00:07:36,045
y si la autenticación básica es exitosa,

106
00:07:36,045 --> 00:07:40,190
entonces configuraré la cookie aquí y configuraré

107
00:07:40,190 --> 00:07:45,440
el campo de cookie en el mensaje de respuesta saliente aquí y

108
00:07:45,440 --> 00:07:49,730
esto pedirá que el para configurar la cookie en el lado del cliente y luego

109
00:07:49,730 --> 00:07:55,055
todas las solicitudes posteriores incluirán esta cookie en la solicitud del cliente.

110
00:07:55,055 --> 00:08:02,085
Entonces, así es como estoy manejando el hecho cuando el cookie.user no existe.

111
00:08:02,085 --> 00:08:05,120
Ahí. Si existe,

112
00:08:05,120 --> 00:08:07,765
entonces la parte más,

113
00:08:07,765 --> 00:08:11,155
por lo que significa que la cookie firmada ya

114
00:08:11,155 --> 00:08:16,415
existe y la propiedad del usuario está definida en eso,

115
00:08:16,415 --> 00:08:18,255
entonces en el otro,

116
00:08:18,255 --> 00:08:19,810
lo que verificaré es

117
00:08:19,810 --> 00:08:33,150
si req.signedCookies.user es admin.

118
00:08:33,150 --> 00:08:37,380
Entonces, eso significa que la cookie firmada contiene la información correcta.

119
00:08:37,380 --> 00:08:39,780
Entonces, diré lo siguiente.

120
00:08:39,780 --> 00:08:44,800
Entonces, lo que significa que permitirá que la solicitud pase.

121
00:08:46,520 --> 00:08:55,250
De lo contrario, esta cookie no es válida porque no contiene este valor correcto.

122
00:08:55,250 --> 00:08:57,635
Eso significa que esto es un error.

123
00:08:57,635 --> 00:08:59,749
Entonces, en este caso,

124
00:08:59,749 --> 00:09:02,750
diremos que no está autenticado,

125
00:09:02,750 --> 00:09:12,075
y luego simplemente causaremos el error en este punto.

126
00:09:12,075 --> 00:09:15,640
Ahora, no vamos a pedir al usuario

127
00:09:15,640 --> 00:09:18,585
la sesión porque eso debe haberse hecho antes.

128
00:09:18,585 --> 00:09:20,870
Ahora, normalmente, esto no sucedería

129
00:09:20,870 --> 00:09:24,470
porque si la cookie ya está configurada en el lado del cliente,

130
00:09:24,470 --> 00:09:27,005
entonces debe incluir el valor correcto de todos modos.

131
00:09:27,005 --> 00:09:29,850
Pero en aras de la exhaustividad,

132
00:09:29,850 --> 00:09:35,315
también he incluido la comprobación de errores de otro aquí en este punto. Eso es todo.

133
00:09:35,315 --> 00:09:38,210
Con esta configuración, hemos convertido

134
00:09:38,210 --> 00:09:43,710
nuestra aplicación express en una que maneja las cookies aquí.

135
00:09:43,710 --> 00:09:48,405
Nota de nuevo, permítanme llamar su atención sobre lo que estamos haciendo aquí una vez más.

136
00:09:48,405 --> 00:09:50,060
Aquí, estamos comprobando para asegurarnos de

137
00:09:50,060 --> 00:09:54,970
que la propiedad del usuario en las cookies firmadas no existe,

138
00:09:54,970 --> 00:09:57,380
o incluso la propia cookie firmada no existe.

139
00:09:57,380 --> 00:10:02,595
Entonces, esperaremos que se haga la autorización básica.

140
00:10:02,595 --> 00:10:04,850
Si la autorización es exitosa,

141
00:10:04,850 --> 00:10:09,860
entonces voy a configurar la cookie usando el res.cookie aquí.

142
00:10:09,860 --> 00:10:14,035
Luego, todas las solicitudes posteriores llevarán la cookie firmada de todos modos,

143
00:10:14,035 --> 00:10:17,080
y luego verificaré para ver que la cookie firmada es

144
00:10:17,080 --> 00:10:22,905
una cookie firmada válida y contiene la propiedad del usuario que se establece igual a admin.

145
00:10:22,905 --> 00:10:25,680
Si lo hace, entonces este es un acceso autorizado,

146
00:10:25,680 --> 00:10:27,935
por lo que permitirá seguir adelante.

147
00:10:27,935 --> 00:10:31,920
Si no, entonces planteo un error en este punto.

148
00:10:31,920 --> 00:10:39,710
Corrección menor, las nuevas versiones de Node.js esperan que lo use como

149
00:10:39,710 --> 00:10:47,500
nuevo búfer. From en lugar de nuevo Buffer para tratar algunos problemas de seguridad.

150
00:10:47,500 --> 00:10:53,165
Así que simplemente corrija esta línea a un nuevo búfer.from. Eso es todo.

151
00:10:53,165 --> 00:10:59,600
Vamos a guardar los cambios y luego vamos a ver nuestra aplicación en ese cartero.

152
00:10:59,600 --> 00:11:03,310
Si el servidor anterior se está ejecutando,

153
00:11:03,310 --> 00:11:06,155
basta con detenerlo escribiendo Control C

154
00:11:06,155 --> 00:11:09,665
y, a continuación, reinicie el servidor diciendo npm start.

155
00:11:09,665 --> 00:11:13,305
Por supuesto, asegúrese de que su servidor MongoDB está en funcionamiento.

156
00:11:13,305 --> 00:11:17,140
De lo contrario, el servidor Express no se iniciará correctamente.

157
00:11:17,140 --> 00:11:19,955
Así que una vez que se inicie su servidor express,

158
00:11:19,955 --> 00:11:26,250
entonces vamos a nuestro cartero e intentemos conectarnos al servidor.

159
00:11:26,250 --> 00:11:30,970
Y voy a demostrar algunos aspectos sobre cómo se manejan las cookies.

160
00:11:30,970 --> 00:11:32,939
Ahora, yendo a Cartero,

161
00:11:32,939 --> 00:11:35,980
déjame borrar toda esta información

162
00:11:35,980 --> 00:11:40,745
de mi Cartero y luego empezaremos con lo básico.

163
00:11:40,745 --> 00:11:44,265
Así que déjame intentar acceder al localhost: 3000/platos.

164
00:11:44,265 --> 00:11:47,335
Ahora, después de haber limpiado todo,

165
00:11:47,335 --> 00:11:49,460
enviaré la solicitud y guardaré.

166
00:11:49,460 --> 00:11:51,150
Y así, desde el lado del servidor,

167
00:11:51,150 --> 00:11:53,600
dice que no estás autenticado.

168
00:11:53,600 --> 00:11:55,365
Luego, cuando miras el encabezado,

169
00:11:55,365 --> 00:12:00,350
esto me está pidiendo que me autentique usando WWW-Authenticate.

170
00:12:00,350 --> 00:12:05,115
Así que ahora, permítanme entrar en la autorización y luego configurar la autorización básica,

171
00:12:05,115 --> 00:12:08,415
y luego configuraré la autorización como administrador,

172
00:12:08,415 --> 00:12:14,200
y luego contraseña, y luego actualizar la solicitud para que el encabezado

173
00:12:14,200 --> 00:12:20,090
ahora contenga el encabezado de autorización aquí con la información allí.

174
00:12:20,090 --> 00:12:23,900
Y luego déjame enviar la solicitud de Git en esta parte.

175
00:12:23,900 --> 00:12:25,805
Si envío la solicitud de Git,

176
00:12:25,805 --> 00:12:34,205
entonces en respuesta, verá que la solicitud de Git fue exitosa.

177
00:12:34,205 --> 00:12:38,300
Tenga en cuenta también algunas cosas más.

178
00:12:38,300 --> 00:12:41,060
Verá que el estado es 200 OK.

179
00:12:41,060 --> 00:12:50,805
Tenga en cuenta también que una cookie se ha configurado en nuestro lado del cliente dentro de Postman aquí.

180
00:12:50,805 --> 00:12:53,120
Esta cookie contiene información.

181
00:12:53,120 --> 00:12:55,420
Veremos los detalles de la galleta en un minuto.

182
00:12:55,420 --> 00:12:57,265
Luego, cuando miras el encabezado,

183
00:12:57,265 --> 00:13:03,130
ves en el encabezado este valor aquí diciendo Set-Cookie,

184
00:13:03,130 --> 00:13:06,165
y luego esta información que viene aquí.

185
00:13:06,165 --> 00:13:10,290
Ahora, si lo miras cuidadosamente,

186
00:13:10,290 --> 00:13:13,965
verás algo aquí dice usuario igual a,

187
00:13:13,965 --> 00:13:18,000
y luego ves este valor aquí, admin allí.

188
00:13:18,000 --> 00:13:23,845
Por lo tanto, usted nota que algo ha sido encerrado dentro de la cookie.

189
00:13:23,845 --> 00:13:26,465
Si desea examinar realmente la cookie,

190
00:13:26,465 --> 00:13:30,355
vaya aquí en Postman y luego haga clic en estas teclas,

191
00:13:30,355 --> 00:13:37,205
y luego esto le mostrará todas las cookies que se han configurado en este lado del cliente.

192
00:13:37,205 --> 00:13:43,365
Entonces, en particular, ahora permítanme borrar todas estas otras galletas.

193
00:13:43,365 --> 00:13:48,640
Probablemente he usado algunos de estos por alguna otra razón.

194
00:13:48,640 --> 00:13:51,290
Así que déjame limpiar esas galletas.

195
00:13:51,290 --> 00:13:53,020
De todos modos, si los

196
00:13:53,020 --> 00:13:54,355
ves, puedes dejarlos ahí.

197
00:13:54,355 --> 00:13:56,385
No es un gran problema.

198
00:13:56,385 --> 00:14:00,220
Concéntrese específicamente en el host local aquí,

199
00:14:00,220 --> 00:14:02,620
y luego verá esta cookie aquí.

200
00:14:02,620 --> 00:14:03,780
Simplemente haga clic en la cookie,

201
00:14:03,780 --> 00:14:08,710
y luego verá el valor real dentro de la cookie que se almacena allí.

202
00:14:08,710 --> 00:14:12,130
A continuación, también la fecha de caducidad para esa configuración de cookies aquí.

203
00:14:12,130 --> 00:14:15,460
Ahora, este valor será exactamente lo que vio en

204
00:14:15,460 --> 00:14:18,890
la cookie de conjunto que entró desde el lado del servidor.

205
00:14:18,890 --> 00:14:24,620
Ahora, esto también significa que en las solicitudes posteriores que entran,

206
00:14:24,620 --> 00:14:27,365
por lo que incluso si borro mi autorización,

207
00:14:27,365 --> 00:14:31,010
e incluso si elimino el encabezado de autorización,

208
00:14:31,150 --> 00:14:34,225
porque la cookie se ha configurado,

209
00:14:34,225 --> 00:14:37,110
esta cookie se ha configurado en mi host local,

210
00:14:37,110 --> 00:14:44,335
cada solicitud posterior va a este servidor incluirá esta cookie.

211
00:14:44,335 --> 00:14:51,000
Entonces, aunque no tendría los encabezados configurados allí,

212
00:14:51,000 --> 00:14:52,285
si envío la solicitud,

213
00:14:52,285 --> 00:14:57,940
notarás que la solicitud de Git funciona como antes sin ningún problema,

214
00:14:57,940 --> 00:15:02,195
debido al hecho de que cada solicitud saliente incluirá automáticamente

215
00:15:02,195 --> 00:15:08,075
esta cookie en la solicitud saliente de mi Postman aquí.

216
00:15:08,075 --> 00:15:13,850
Esto demuestra el uso de cookies en nuestra aplicación.

217
00:15:13,850 --> 00:15:18,260
Con esto, hemos visto cómo se pueden configurar y

218
00:15:18,260 --> 00:15:22,404
procesar cookies en nuestro servidor express utilizando el analizador de cookies,

219
00:15:22,404 --> 00:15:25,330
y cómo podemos configurar cookies firmadas.

220
00:15:25,330 --> 00:15:31,390
Este es un buen momento para que hagas una confirmación de git con las cookies de mensaje.