﻿1
00:00:01,040 --> 00:00:03,970
‫Narrador: Hasta ahora, en nuestra implementación de

2
00:00:03,970 --> 00:00:07,780
‫autenticación, hemos registrado a los usuarios con una contraseña correcta.

3
00:00:07,780 --> 00:00:11,170
‫Básicamente, completamos este primer paso del flujo de trabajo de

4
00:00:11,170 --> 00:00:13,170
‫autenticación en el que

5
00:00:13,170 --> 00:00:15,760
‫se crea un token web JSON y

6
00:00:15,760 --> 00:00:18,730
‫se envía de vuelta al cliente si el usuario

7
00:00:18,730 --> 00:00:21,440
‫proporciona un correo electrónico y una contraseña correctos.

8
00:00:21,440 --> 00:00:25,350
‫A continuación, implementaremos rutas protegidas.

9
00:00:25,350 --> 00:00:28,630
‫Básicamente, se utiliza el token web JSON

10
00:00:28,630 --> 00:00:32,930
‫creado para dar acceso a los usuarios registrados a rutas protegidas.

11
00:00:32,930 --> 00:00:36,220
‫Y este es el segundo paso de la autenticación.

12
00:00:36,220 --> 00:00:39,823
‫Y entonces, sigamos adelante e implementemos esta funcionalidad.

13
00:00:41,620 --> 00:00:43,880
‫Entonces, digamos que queríamos proteger

14
00:00:43,880 --> 00:00:45,670
‫la ruta getAllTours.

15
00:00:45,670 --> 00:00:48,470
‫Básicamente, solo permite que los usuarios registrados

16
00:00:48,470 --> 00:00:51,560
‫tengan acceso a una lista de todos nuestros recorridos.

17
00:00:51,560 --> 00:00:53,830
‫Y lo que significa es que antes de

18
00:00:53,830 --> 00:00:55,700
‫ejecutar el controlador get all tours,

19
00:00:55,700 --> 00:00:57,353
‫echemos un vistazo a eso.

20
00:00:58,340 --> 00:01:01,330
‫Bien, entonces antes de ejecutar este identificador aquí,

21
00:01:01,330 --> 00:01:03,240
‫necesitaríamos tener alguna verificación para

22
00:01:03,240 --> 00:01:05,120
‫verificar si el

23
00:01:05,120 --> 00:01:07,760
‫usuario está realmente conectado o no, ¿verdad?

24
00:01:07,760 --> 00:01:09,540
‫Entonces, la mejor manera de

25
00:01:09,540 --> 00:01:11,640
‫hacer eso, como probablemente ya sabe

26
00:01:11,640 --> 00:01:15,160
‫en este punto, es usar una función de middleware, ¿de acuerdo?

27
00:01:15,160 --> 00:01:17,300
‫Entonces, en este video, para proteger

28
00:01:17,300 --> 00:01:19,640
‫las rutas, crearemos una función de middleware

29
00:01:19,640 --> 00:01:23,560
‫que se ejecutará antes de cada uno de estos controladores, está bien.

30
00:01:23,560 --> 00:01:26,320
‫Entonces, una función que se ubicará

31
00:01:26,320 --> 00:01:29,440
‫aquí, antes de que esta función pueda ejecutarse.

32
00:01:29,440 --> 00:01:32,050
‫Y este middleware devolverá un error si

33
00:01:32,050 --> 00:01:34,140
‫el usuario no está autenticado, por

34
00:01:34,140 --> 00:01:35,850
‫lo que si no

35
00:01:35,850 --> 00:01:37,780
‫ha iniciado sesión, o llamará

36
00:01:37,780 --> 00:01:42,150
‫al siguiente middleware, que en este caso es el controlador getAllTours, ¿verdad?

37
00:01:42,150 --> 00:01:44,730
‫Y eso que eficaz protege esta

38
00:01:44,730 --> 00:01:47,080
‫ruta del acceso no autorizado.

39
00:01:47,080 --> 00:01:48,810
‫Así que sigamos adelante y creemos

40
00:01:48,810 --> 00:01:50,290
‫rápidamente esa función de

41
00:01:50,290 --> 00:01:51,480
‫middleware y luego

42
00:01:51,480 --> 00:01:54,060
‫pongámosla aquí para ilustrar lo que acabo de decir.

43
00:01:54,060 --> 00:01:57,620
‫Bien, aquí en nuestro controlador de autenticación de

44
00:01:57,620 --> 00:02:00,170
‫nuevo crearemos una nueva función de

45
00:02:03,920 --> 00:02:06,283
‫middleware y se llama proteger.

46
00:02:08,510 --> 00:02:09,343
‫Muy bien,

47
00:02:09,343 --> 00:02:11,600
‫y al igual que antes, voy a

48
00:02:12,480 --> 00:02:14,740
‫usar catchAsync porque una vez más todas estas

49
00:02:14,740 --> 00:02:16,553
‫funciones son funciones asíncronas en realidad.

50
00:02:17,990 --> 00:02:21,210
‫Muy bien, y luego aquí, por supuesto, nuestra función

51
00:02:24,320 --> 00:02:27,270
‫de middleware y, por ahora, simplemente llamemos al

52
00:02:27,270 --> 00:02:30,190
‫siguiente aquí solo para que tengamos cualquier cuerpo

53
00:02:30,190 --> 00:02:32,240
‫aquí en esta función

54
00:02:32,240 --> 00:02:35,090
‫de middleware y luego regresemos a nuestras

55
00:02:35,090 --> 00:02:38,540
‫rutas turísticas y luego protejamos esta ruta, de acuerdo. ?

56
00:02:38,540 --> 00:02:42,190
‫Entonces, en primer lugar, necesito realmente requerir este

57
00:02:42,190 --> 00:02:44,620
‫módulo de controlador de autenticación.

58
00:02:44,620 --> 00:02:45,453
‫Entonces

59
00:02:50,550 --> 00:02:52,350
‫const y luego requiera que

60
00:02:56,410 --> 00:02:57,920
‫esté en controladores, y

61
00:02:57,920 --> 00:02:59,713
‫luego authController, está bien.

62
00:03:01,430 --> 00:03:04,150
‫Así que ahora conectémoslo,

63
00:03:04,150 --> 00:03:07,460
‫aquí mismo en la ruta getAllTours.

64
00:03:07,460 --> 00:03:08,293
‫Bueno.

65
00:03:09,550 --> 00:03:13,913
‫Entonces authController. proteger.

66
00:03:14,860 --> 00:03:15,693
‫Bueno.

67
00:03:15,693 --> 00:03:18,740
‫Y ahora, esta función de middleware se ejecutará primero

68
00:03:18,740 --> 00:03:21,875
‫y nuevamente, si el usuario no está autenticado, habrá

69
00:03:21,875 --> 00:03:22,950
‫un error.

70
00:03:22,950 --> 00:03:25,070
‫Y, por supuesto, el próximo middleware,

71
00:03:25,070 --> 00:03:26,690
‫por lo que el

72
00:03:26,690 --> 00:03:30,540
‫que realmente recibe y envía todos los recorridos no se ejecutará.

73
00:03:30,540 --> 00:03:31,373
‫Bueno.

74
00:03:31,373 --> 00:03:34,700
‫Y nuevamente, esto protegerá efectivamente el acceso a

75
00:03:34,700 --> 00:03:38,223
‫este recurso aquí de los usuarios que no están conectados.

76
00:03:39,250 --> 00:03:42,700
‫Muy bien, regresemos aquí.

77
00:03:42,700 --> 00:03:44,340
‫No las rutas del

78
00:03:44,340 --> 00:03:45,993
‫usuario, sino el controlador de autenticación.

79
00:03:46,850 --> 00:03:49,760
‫Muy bien, y ahora sobre la implementación de este

80
00:03:49,760 --> 00:03:51,180
‫middleware de protección.

81
00:03:51,180 --> 00:03:53,660
‫¿Qué tendremos que hacer exactamente?

82
00:03:53,660 --> 00:03:56,583
‫Bueno, comencemos por delinear un par de pasos aquí.

83
00:03:57,460 --> 00:04:00,660
‫De acuerdo, y en primer lugar, debemos marcar

84
00:04:00,660 --> 00:04:03,720
‫esta función como Async, de lo contrario,

85
00:04:03,720 --> 00:04:05,630
‫no necesitaríamos catchAsync, ¿verdad?

86
00:04:05,630 --> 00:04:09,260
‫Y verá por qué necesitamos que esto sea una función Async

87
00:04:09,260 --> 00:04:11,360
‫en un segundo, ¿de acuerdo?

88
00:04:11,360 --> 00:04:13,760
‫Pero ahora expongamos los pasos que

89
00:04:13,760 --> 00:04:16,803
‫debemos seguir para implementar este middleware de protección.

90
00:04:18,460 --> 00:04:19,840
‫Así que, al igual

91
00:04:19,840 --> 00:04:21,990
‫que antes, pondré estos pasos aquí como comentarios.

92
00:04:23,340 --> 00:04:26,173
‫En primer lugar, necesitamos obtener el token.

93
00:04:28,720 --> 00:04:29,553
‫Y

94
00:04:30,660 --> 00:04:32,610
‫verifique si está ahí básicamente,

95
00:04:32,610 --> 00:04:34,303
‫así que verifique si existe.

96
00:04:35,400 --> 00:04:39,113
‫Luego, a continuación, debemos validar el token.

97
00:04:41,860 --> 00:04:44,383
‫Y este es básicamente ese paso

98
00:04:44,383 --> 00:04:48,900
‫súper importante del que hablamos antes, donde el algoritmo JWT verifica si

99
00:04:48,900 --> 00:04:50,680
‫la firma es válida o

100
00:04:50,680 --> 00:04:51,513
‫no.

101
00:04:51,513 --> 00:04:54,950
‫Entonces, si el token es válido o no, ¿de acuerdo?

102
00:04:54,950 --> 00:04:57,450
‫Entonces, en realidad, llamemos a esto aquí verificación.

103
00:04:58,930 --> 00:05:01,680
‫Creo que así lo llamamos en esa diapositiva en la

104
00:05:01,680 --> 00:05:03,630
‫que hablamos de esto antes, de acuerdo.

105
00:05:03,630 --> 00:05:06,040
‫Y si realmente no recuerdas cómo funcionó, bueno,

106
00:05:06,040 --> 00:05:07,350
‫siempre puedes volver

107
00:05:07,350 --> 00:05:10,003
‫atrás y volver a ver esa conferencia, ¿de acuerdo?

108
00:05:11,470 --> 00:05:15,750
‫Luego, a continuación, si la verificación fue realmente exitosa, también debemos verificar

109
00:05:15,750 --> 00:05:18,930
‫si el usuario que está tratando de acceder

110
00:05:18,930 --> 00:05:21,870
‫a la ruta todavía existe, ¿de acuerdo?

111
00:05:21,870 --> 00:05:25,940
‫Así que verifique si el usuario todavía existe, y hablaré más

112
00:05:25,940 --> 00:05:28,090
‫sobre por qué cada uno

113
00:05:28,090 --> 00:05:32,610
‫de estos pasos es necesario una vez que comencemos a implementarlos, ¿de acuerdo?

114
00:05:32,610 --> 00:05:35,410
‫Entonces, por ahora, esto puede no tener mucho sentido

115
00:05:35,410 --> 00:05:38,950
‫para usted, pero nuevamente hablaré sobre cada parada una vez que lleguemos allí.

116
00:05:38,950 --> 00:05:39,783
‫¿Está bien?

117
00:05:39,783 --> 00:05:41,440
‫Y finalmente también debemos verificar

118
00:05:42,980 --> 00:05:43,813
‫si

119
00:05:45,490 --> 00:05:47,000
‫el usuario cambió la

120
00:05:50,090 --> 00:05:51,720
‫contraseña después de que

121
00:05:53,060 --> 00:05:54,993
‫se emitió el JWT, ¿de acuerdo?

122
00:05:56,690 --> 00:05:58,280
‫Bueno, digamos token aquí, lo

123
00:05:58,280 --> 00:06:01,060
‫llamamos token en todos los demás lugares, ¿de acuerdo?

124
00:06:01,060 --> 00:06:03,320
‫Y solo si no hubo problemas

125
00:06:03,320 --> 00:06:05,310
‫en ninguno de estos pasos

126
00:06:05,310 --> 00:06:08,480
‫aquí, solo entonces, por supuesto, se llamará a continuación, que

127
00:06:08,480 --> 00:06:11,210
‫luego tendrá acceso a la ruta que protegemos.

128
00:06:11,210 --> 00:06:16,210
‫Entonces, en nuestro ejemplo actual, nuevamente, este controlador getAllTours.

129
00:06:16,420 --> 00:06:17,610
‫¿Derecha?

130
00:06:17,610 --> 00:06:19,260
‫Bien, pero retrocedamos

131
00:06:19,260 --> 00:06:22,540
‫y comencemos a implementar nuestro primer paso aquí.

132
00:06:22,540 --> 00:06:24,380
‫Básicamente, obtener el token

133
00:06:24,380 --> 00:06:26,860
‫y luego verificar si realmente existe.

134
00:06:26,860 --> 00:06:31,340
‫Entonces, una práctica común es enviar un token usando un encabezado http

135
00:06:31,340 --> 00:06:33,380
‫con la solicitud, ¿de acuerdo?

136
00:06:33,380 --> 00:06:36,580
‫Entonces, echemos un vistazo a cómo podemos configurar encabezados en Postman

137
00:06:36,580 --> 00:06:38,427
‫para enviarlo junto con la

138
00:06:38,427 --> 00:06:40,420
‫solicitud y luego también cómo podemos obtener

139
00:06:40,420 --> 00:06:42,410
‫acceso a estos encabezados en Express.

140
00:06:42,410 --> 00:06:45,300
‫Y vamos a hacer eso primero.

141
00:06:45,300 --> 00:06:50,300
‫Así que aquí en apt. js Creo que tenemos este buen middleware

142
00:06:51,240 --> 00:06:54,610
‫aquí, por lo que aquí vamos a iniciar sesión en

143
00:06:56,290 --> 00:06:59,890
‫la solicitud de la consola. encabezados, Bien, ya

144
00:06:59,890 --> 00:07:03,250
‫hablamos de encabezados http antes, y así

145
00:07:03,250 --> 00:07:07,140
‫es como podemos acceder a ellos en Express.

146
00:07:07,140 --> 00:07:10,350
‫Bien, básicamente a los encabezados de solicitud, es decir,

147
00:07:10,350 --> 00:07:13,753
‫los que un cliente puede enviar junto con su solicitud.

148
00:07:14,600 --> 00:07:17,890
‫Bien, y aquí en Postman, ahora vayamos a la

149
00:07:19,060 --> 00:07:22,150
‫ruta que en realidad estamos tratando de proteger.

150
00:07:22,150 --> 00:07:24,270
‫Y luego aquí establece un encabezado.

151
00:07:24,270 --> 00:07:25,670
‫Y hagamos una

152
00:07:29,100 --> 00:07:32,070
‫prueba y configurémoslo en jonas, ¿de acuerdo?

153
00:07:32,070 --> 00:07:33,340
‫Ahora solo enviaré

154
00:07:35,140 --> 00:07:38,240
‫esto y aquí en Express, echemos un vistazo a eso.

155
00:07:38,240 --> 00:07:41,800
‫Y, de hecho, aquí obtenemos un objeto con todos los encabezados

156
00:07:41,800 --> 00:07:43,900
‫que forman parte de la solicitud.

157
00:07:43,900 --> 00:07:45,700
‫Así que todo esto aquí.

158
00:07:45,700 --> 00:07:48,380
‫Y ves que hay un montón de

159
00:07:48,380 --> 00:07:51,090
‫encabezados que Postman envía automáticamente junto con la

160
00:07:51,090 --> 00:07:54,740
‫solicitud, por ejemplo, dice que el usuario-agente es Postman, también

161
00:07:54,740 --> 00:07:56,970
‫envía el host, y algunos otros

162
00:07:56,970 --> 00:07:59,370
‫de los que hablaremos más adelante, como

163
00:07:59,370 --> 00:08:00,943
‫aceptar por ejemplo.

164
00:08:01,800 --> 00:08:04,070
‫Ahora, lo que importa aquí es en realidad el

165
00:08:04,070 --> 00:08:05,470
‫encabezado que nosotros mismos establecimos.

166
00:08:05,470 --> 00:08:08,730
‫Bien, entonces el encabezado de prueba se estableció en jonas que acabamos

167
00:08:08,730 --> 00:08:10,360
‫de enviar en nuestra solicitud.

168
00:08:10,360 --> 00:08:14,240
‫Ahora, para enviar un token web JSON como encabezado, en realidad

169
00:08:14,240 --> 00:08:16,470
‫existe un estándar para hacerlo.

170
00:08:16,470 --> 00:08:21,080
‫Así que volvamos aquí, deshazte de todo esto.

171
00:08:21,080 --> 00:08:24,760
‫Y entonces ese estándar para enviar un token es que

172
00:08:24,760 --> 00:08:27,503
‫siempre debemos usar un encabezado llamado autorización.

173
00:08:30,430 --> 00:08:31,263
‫¿Okey?

174
00:08:31,263 --> 00:08:32,940
‫Así que así y luego

175
00:08:32,940 --> 00:08:35,890
‫el valor de ese encabezado siempre debe comenzar con

176
00:08:35,890 --> 00:08:37,410
‫Bearer, ¿de acuerdo?

177
00:08:37,410 --> 00:08:42,300
‫Porque básicamente llevamos, tenemos, poseemos este token y luego aquí

178
00:08:42,300 --> 00:08:44,680
‫el valor del token.

179
00:08:44,680 --> 00:08:47,750
‫Así que al igual que esta cadena aleatoria que obtuvimos antes.

180
00:08:47,750 --> 00:08:51,610
‫Así que dejémoslo aquí como ejemplo, y

181
00:08:51,610 --> 00:08:53,323
‫enviemos eso ahora.

182
00:08:55,180 --> 00:08:57,913
‫Y entonces, de hecho, deberíamos conseguirlo aquí.

183
00:08:59,050 --> 00:09:00,310
‫Bueno.

184
00:09:00,310 --> 00:09:03,620
‫Now Express convierte automáticamente todos los nombres de encabezado en

185
00:09:03,620 --> 00:09:06,160
‫minúsculas, como puede ver aquí, pero

186
00:09:06,160 --> 00:09:09,950
‫por supuesto, nuestro valor de encabezado aquí sigue siendo el mismo.

187
00:09:09,950 --> 00:09:13,550
‫Está bien, y básicamente esta parte del valor del encabezado

188
00:09:13,550 --> 00:09:15,050
‫es nuestro token.

189
00:09:15,050 --> 00:09:16,870
‫Y así es como deberíamos

190
00:09:16,870 --> 00:09:18,720
‫leer ahora ese token del encabezado.

191
00:09:18,720 --> 00:09:19,553
‫¿Está bien?

192
00:09:20,550 --> 00:09:22,793
‫Entonces, si realmente

193
00:09:24,130 --> 00:09:29,130
‫hay req. encabezados. autorización, está bien,

194
00:09:32,730 --> 00:09:34,300
‫y si

195
00:09:34,300 --> 00:09:40,643
‫comienza básicamente con esta cadena portadora aquí está bien, entonces

196
00:09:42,720 --> 00:09:46,670
‫req. encabezados. autorización y ahora esto

197
00:09:46,670 --> 00:09:48,240
‫es una cadena, por lo

198
00:09:48,240 --> 00:09:50,050
‫que podemos usar startsWith en eso,

199
00:09:52,210 --> 00:09:55,290
‫está bien, así que esto es solo JavaScript normal nuevamente,

200
00:09:57,910 --> 00:09:58,930
‫está bien.

201
00:09:58,930 --> 00:10:03,020
‫Y estas son las condiciones bajo las cuales realmente queremos

202
00:10:03,020 --> 00:10:05,430
‫guardar un token, ¿de acuerdo?

203
00:10:05,430 --> 00:10:08,530
‫Entonces, nuevamente, en caso de que exista

204
00:10:08,530 --> 00:10:13,260
‫el encabezado tghe y su valor comience con Bearer, está bien.

205
00:10:13,260 --> 00:10:18,260
‫Entonces, en ese caso, queremos decir que el token es igual

206
00:10:18,460 --> 00:10:22,257
‫a req. encabezados. autorización y

207
00:10:23,890 --> 00:10:26,810
‫ahora, ¿cómo obtenemos esta segunda parte

208
00:10:26,810 --> 00:10:28,350
‫de la cadena?

209
00:10:28,350 --> 00:10:30,820
‫Bueno, básicamente vamos a dividir la cadena

210
00:10:30,820 --> 00:10:33,050
‫por este carácter de espacio, está bien,

211
00:10:33,050 --> 00:10:34,610
‫que luego creará una matriz

212
00:10:34,610 --> 00:10:35,890
‫con este

213
00:10:35,890 --> 00:10:37,860
‫Portador y con este token y

214
00:10:37,860 --> 00:10:39,690
‫entonces tomaremos esa parte de

215
00:10:39,690 --> 00:10:41,063
‫la matriz que queremos.

216
00:10:42,260 --> 00:10:45,080
‫Entonces, divida usando el espacio, y

217
00:10:45,080 --> 00:10:48,380
‫luego de esa matriz queremos el segundo elemento.

218
00:10:48,380 --> 00:10:49,490
‫¿Está bien?

219
00:10:49,490 --> 00:10:52,760
‫Ahora, en realidad, no podemos definir una variable dentro de un

220
00:10:52,760 --> 00:10:53,800
‫bloque if

221
00:10:53,800 --> 00:10:55,440
‫porque const y let, por

222
00:10:55,440 --> 00:10:58,260
‫lo que la nueva variable declaratoria de ES6 tiene

223
00:10:58,260 --> 00:10:59,710
‫un alcance de bloque, por

224
00:10:59,710 --> 00:11:02,650
‫lo que cualquier cosa que definamos en este bloque aquí

225
00:11:02,650 --> 00:11:04,700
‫no estará disponible fuera de él.

226
00:11:05,690 --> 00:11:08,643
‫Bien, hagámoslo afuera.

227
00:11:11,970 --> 00:11:16,280
‫Y luego simplemente reasigne este valor al token.

228
00:11:16,280 --> 00:11:17,113
‫Bueno.

229
00:11:18,670 --> 00:11:21,880
‫Y ahora, registremos el token en la consola solo

230
00:11:21,880 --> 00:11:23,863
‫para ver si funciona.

231
00:11:25,130 --> 00:11:28,670
‫De acuerdo, y de hecho, consigamos una especie de

232
00:11:28,670 --> 00:11:30,373
‫token real aquí.

233
00:11:31,240 --> 00:11:33,253
‫Entonces, el que acabamos de iniciar sesión.

234
00:11:35,990 --> 00:11:39,710
‫Y luego pon ese aquí, está bien.

235
00:11:39,710 --> 00:11:40,723
‫Así

236
00:11:42,360 --> 00:11:45,480
‫que mándalo y ¡ah!

237
00:11:45,480 --> 00:11:45,480
‫Aquí vamos.

238
00:11:45,480 --> 00:11:49,760
‫Entonces, aquí tenemos nuestros datos de token web JSON que acabamos de enviar

239
00:11:49,760 --> 00:11:51,110
‫junto con la solicitud.

240
00:11:51,110 --> 00:11:55,120
‫Apaguemos rápidamente este registro de consola aquí.

241
00:11:55,120 --> 00:11:59,590
‫De acuerdo, y justo antes de continuar,

242
00:11:59,590 --> 00:12:03,480
‫verifiquemos si el token realmente existe.

243
00:12:03,480 --> 00:12:04,313
‫Bueno.

244
00:12:05,810 --> 00:12:07,510
‫Entonces, si no hay

245
00:12:10,360 --> 00:12:14,090
‫un token bien, entonces, por supuesto, queremos crear un nuevo error.

246
00:12:14,090 --> 00:12:16,630
‫Bien, y al igual que antes,

247
00:12:16,630 --> 00:12:19,030
‫regresamos de este middleware y llamamos

248
00:12:19,030 --> 00:12:21,260
‫al siguiente, está bien.

249
00:12:21,260 --> 00:12:24,560
‫Y ahora aquí, vamos a crear un error y, por lo

250
00:12:24,560 --> 00:12:26,140
‫tanto, pasaremos directamente a

251
00:12:26,140 --> 00:12:29,403
‫nuestro middleware de manejo de errores globales con este error.

252
00:12:30,487 --> 00:12:33,860
‫De acuerdo, si no se envía ningún token con la solicitud, eso

253
00:12:33,860 --> 00:12:35,913
‫significa que no hemos iniciado sesión.

254
00:12:36,870 --> 00:12:40,310
‫Así que enviemos al usuario que no ha iniciado

255
00:12:41,530 --> 00:12:42,373
‫sesión.

256
00:12:45,610 --> 00:12:48,793
‫Inicie sesión para obtener acceso.

257
00:12:50,137 --> 00:12:52,380
‫Muy bien, y ahora el

258
00:12:52,380 --> 00:12:55,090
‫código de estado para este tipo de situación

259
00:12:55,090 --> 00:12:58,040
‫es 401, lo que significa no autorizado, ¿de acuerdo?

260
00:12:58,040 --> 00:13:00,430
‫No estoy seguro de si lo hemos

261
00:13:00,430 --> 00:13:03,380
‫usado antes y sí, en realidad también lo hicimos aquí.

262
00:13:03,380 --> 00:13:05,290
‫Bien, y esto básicamente significa

263
00:13:05,290 --> 00:13:08,890
‫que los datos que se enviaron en la solicitud son

264
00:13:08,890 --> 00:13:12,110
‫correctos, pero básicamente no son suficientes para que el

265
00:13:12,110 --> 00:13:15,050
‫usuario acceda a un recurso que está solicitando.

266
00:13:15,050 --> 00:13:16,080
‫Está bien.

267
00:13:16,080 --> 00:13:17,280
‫Sólo tienes que

268
00:13:18,280 --> 00:13:20,270
‫guardarlo aquí y probarlo de nuevo.

269
00:13:20,270 --> 00:13:24,660
‫Entonces, si básicamente quitamos este encabezado aquí, entonces

270
00:13:24,660 --> 00:13:28,090
‫deberíamos entrar de inmediato en ese error,

271
00:13:28,090 --> 00:13:29,120
‫¿verdad?

272
00:13:29,120 --> 00:13:31,910
‫Y, de hecho, no ha iniciado sesión, inicie

273
00:13:31,910 --> 00:13:33,340
‫sesión para obtener acceso.

274
00:13:33,340 --> 00:13:35,600
‫Con 401 no autorizado.

275
00:13:35,600 --> 00:13:38,950
‫¡Excelente! Entonces esa parte ya está funcionando.

276
00:13:38,950 --> 00:13:41,500
‫Muy bien, y ahora solo para recapitular,

277
00:13:41,500 --> 00:13:44,590
‫ahora mismo no estamos enviando ningún token junto con

278
00:13:44,590 --> 00:13:45,903
‫la solicitud, ¿verdad?

279
00:13:47,330 --> 00:13:51,370
‫Y por esa razón, por supuesto, no hay ninguna ficha, ¿de acuerdo?

280
00:13:51,370 --> 00:13:53,380
‫Y, por lo tanto, creamos

281
00:13:53,380 --> 00:13:56,680
‫este error, que luego activará nuestro middleware de manejo de errores

282
00:13:56,680 --> 00:13:59,260
‫para enviar ese error al cliente, ¿de acuerdo?

283
00:13:59,260 --> 00:14:02,690
‫Y luego, por supuesto, no tenemos acceso a todos

284
00:14:02,690 --> 00:14:05,600
‫los recorridos, porque, por supuesto, este

285
00:14:05,600 --> 00:14:08,710
‫middleware se ejecuta antes que el controlador getAllTours.

286
00:14:08,710 --> 00:14:13,070
‫Y ahora mismo, esto realmente está protegido, ¿de acuerdo?

287
00:14:13,070 --> 00:14:17,170
‫Así que ya está funcionando bastante bien en este momento.

288
00:14:17,170 --> 00:14:19,870
‫Pero, por supuesto, esto está lejos de ser

289
00:14:19,870 --> 00:14:23,480
‫suficiente, porque no es suficiente enviar un token con una solicitud.

290
00:14:23,480 --> 00:14:26,290
‫También debe ser un token válido.

291
00:14:26,290 --> 00:14:28,410
‫Básicamente, un token en el que nadie

292
00:14:28,410 --> 00:14:30,270
‫intentó cambiar la carga útil.

293
00:14:30,270 --> 00:14:34,110
‫De acuerdo, y la carga útil, recuerde, en nuestro

294
00:14:34,110 --> 00:14:39,110
‫caso siempre es el user_id del usuario para el que se emitió el token.

295
00:14:39,210 --> 00:14:41,380
‫De acuerdo, a continuación,

296
00:14:41,380 --> 00:14:44,200
‫debemos implementar este paso de verificación.

297
00:14:44,200 --> 00:14:47,160
‫Pero esta conferencia ya está siendo bastante larga y

298
00:14:47,160 --> 00:14:49,520
‫todavía hay muchas cosas por hacer

299
00:14:49,520 --> 00:14:52,403
‫aquí, así que dejémoslo para el próximo video.

