﻿1
00:00:01,160 --> 00:00:03,130
‫-: Entonces, anteriormente, ya implementamos

2
00:00:03,130 --> 00:00:05,420
‫una funcionalidad de registro simple, pero

3
00:00:05,420 --> 00:00:06,490
‫en esta

4
00:00:06,490 --> 00:00:08,760
‫lección, también registraremos al usuario para

5
00:00:08,760 --> 00:00:11,700
‫que realice un proceso de registro más real.

6
00:00:11,700 --> 00:00:13,830
‫Entonces, a partir de esta

7
00:00:13,830 --> 00:00:16,760
‫lección, realmente comenzaremos a implementar nuestra autenticación, y

8
00:00:16,760 --> 00:00:19,683
‫aquí es donde se pone realmente serio.

9
00:00:21,230 --> 00:00:23,210
‫Y, por lo tanto, antes de

10
00:00:23,210 --> 00:00:25,150
‫comenzar, quiero darle una advertencia

11
00:00:25,150 --> 00:00:28,740
‫aquí, por lo que la autenticación es muy difícil de

12
00:00:28,740 --> 00:00:31,330
‫hacer bien y hay muchos tutoriales que

13
00:00:31,330 --> 00:00:32,970
‫encontrará cuando busque autenticación

14
00:00:32,970 --> 00:00:35,492
‫con like Node. js y

15
00:00:35,492 --> 00:00:38,480
‫Express, muchos de estos cometen muchos errores

16
00:00:38,480 --> 00:00:42,220
‫graves y simplifican demasiado cosas que no deberían simplificarse.

17
00:00:42,220 --> 00:00:45,270
‫De acuerdo, esto no quiere decir que todos los

18
00:00:45,270 --> 00:00:46,740
‫tutoriales sean malos,

19
00:00:46,740 --> 00:00:48,500
‫estén bien o que sean

20
00:00:48,500 --> 00:00:52,400
‫inútiles o algo así, pero realmente paso semanas investigando todas las mejores

21
00:00:52,400 --> 00:00:54,670
‫prácticas y refinando y mejorando mi código,

22
00:00:54,670 --> 00:00:56,410
‫para hacer esta sección de

23
00:00:56,410 --> 00:00:59,550
‫autenticación que nosotros Vamos a empezar a implementar ahora

24
00:00:59,550 --> 00:01:02,000
‫de la mejor manera posible, para un

25
00:01:02,000 --> 00:01:05,228
‫principiante como tú, de acuerdo, y eso se debe a

26
00:01:05,228 --> 00:01:08,950
‫que debemos tener mucho cuidado al escribir esta parte de la

27
00:01:08,950 --> 00:01:12,730
‫aplicación, porque recuerda, los datos de nuestro usuario están en juego

28
00:01:12,730 --> 00:01:15,650
‫aquí. y la confianza en la empresa que ejecuta

29
00:01:15,650 --> 00:01:17,200
‫la aplicación también está

30
00:01:17,200 --> 00:01:19,080
‫en juego, por lo que

31
00:01:19,080 --> 00:01:21,200
‫implementar la autenticación es una responsabilidad

32
00:01:21,200 --> 00:01:24,360
‫real en la que no debe cometer ningún error.

33
00:01:24,360 --> 00:01:25,980
‫Ahora hay algunas bibliotecas

34
00:01:25,980 --> 00:01:28,470
‫que pueden ayudarnos a implementar la autenticación

35
00:01:28,470 --> 00:01:31,360
‫y la autorización y la más conocida se

36
00:01:31,360 --> 00:01:33,130
‫llama Passport, pero incluso una

37
00:01:33,130 --> 00:01:34,740
‫biblioteca como esa

38
00:01:34,740 --> 00:01:37,470
‫no le quita todo el trabajo y

39
00:01:37,470 --> 00:01:39,510
‫toda la responsabilidad, de acuerdo.

40
00:01:39,510 --> 00:01:40,630
‫Ahora, en este

41
00:01:40,630 --> 00:01:42,810
‫caso, vamos a implementar toda la

42
00:01:42,810 --> 00:01:46,380
‫lógica de autorización y protección de inicio de sesión por nosotros

43
00:01:46,380 --> 00:01:49,910
‫mismos, excepto, por supuesto, la implementación del token web de Jason

44
00:01:49,910 --> 00:01:52,310
‫de la que hablamos en el último video.

45
00:01:52,310 --> 00:01:54,820
‫Bien, entonces toda la firma y verificación,

46
00:01:54,820 --> 00:01:58,170
‫todo eso, lo dejaremos en la biblioteca de WJT,

47
00:01:58,170 --> 00:02:00,450
‫pero luego el resto, lo

48
00:02:00,450 --> 00:02:02,920
‫implementaremos nosotros mismos en las próximas conferencias.

49
00:02:02,920 --> 00:02:04,430
‫Ahora, como mencioné anteriormente,

50
00:02:04,430 --> 00:02:07,830
‫ya tenemos nuestra función de registro aquí, correcto, pero ahora

51
00:02:07,830 --> 00:02:09,240
‫mismo, todo lo

52
00:02:09,240 --> 00:02:11,500
‫que hace es simplemente crear un nuevo

53
00:02:11,500 --> 00:02:14,010
‫usuario y luego enviarlo de vuelta al cliente.

54
00:02:14,010 --> 00:02:17,410
‫Ahora, poco después de terminar de grabar este curso,

55
00:02:17,410 --> 00:02:18,640
‫noté que

56
00:02:18,640 --> 00:02:21,239
‫hay una falla de seguridad muy

57
00:02:21,239 --> 00:02:23,920
‫seria en esta forma de registrar

58
00:02:23,920 --> 00:02:26,630
‫usuarios, así que básicamente el problema es

59
00:02:26,630 --> 00:02:30,640
‫que ahora mismo, creamos un nuevo usuario usando todos los

60
00:02:30,640 --> 00:02:32,850
‫datos que ingresan. el cuerpo

61
00:02:32,850 --> 00:02:36,350
‫correcto, por lo que el problema aquí es que

62
00:02:36,350 --> 00:02:40,960
‫así, cualquiera puede especificar el rol como un derecho de administrador, así

63
00:02:40,960 --> 00:02:45,360
‫que básicamente, ahora todos pueden simplemente registrarse como administradores en nuestra

64
00:02:45,360 --> 00:02:46,670
‫aplicación, y eso,

65
00:02:46,670 --> 00:02:49,620
‫por supuesto, no es lo que necesitamos.

66
00:02:49,620 --> 00:02:53,090
‫De nuevo, esta es una falla de seguridad grave

67
00:02:53,090 --> 00:02:55,860
‫y, por supuesto, tendremos que solucionarla y,

68
00:02:55,860 --> 00:02:58,420
‫en realidad, corregirla es bastante simple.

69
00:02:58,420 --> 00:03:01,150
‫Entonces, lo que necesita en lugar de esta línea

70
00:03:01,150 --> 00:03:02,670
‫de código, que se selecciona

71
00:03:02,670 --> 00:03:06,370
‫aquí, es este fragmento de código que acabo de poner aquí en la pantalla.

72
00:03:06,370 --> 00:03:07,460
‫Bueno.

73
00:03:07,460 --> 00:03:10,900
‫Entonces, nuevamente, continúe y elimine esta línea de código que está

74
00:03:10,900 --> 00:03:12,720
‫actualmente seleccionada aquí y reemplácela

75
00:03:12,720 --> 00:03:15,320
‫con el código que acabo de poner aquí

76
00:03:15,320 --> 00:03:16,690
‫en la pantalla.

77
00:03:16,690 --> 00:03:19,070
‫Ahora, ¿cuál es realmente la gran diferencia

78
00:03:19,070 --> 00:03:21,010
‫aquí? Bueno, con este

79
00:03:21,010 --> 00:03:24,580
‫nuevo código, básicamente solo permitimos que los datos que realmente necesitamos

80
00:03:24,580 --> 00:03:26,550
‫se ingresen en el nuevo usuario,

81
00:03:26,550 --> 00:03:30,370
‫así que solo un nombre, el correo electrónico y luego las contraseñas.

82
00:03:30,370 --> 00:03:34,370
‫Y ahora, incluso si un usuario intenta ingresar manualmente un rol, no

83
00:03:34,370 --> 00:03:37,030
‫lo almacenaremos en el nuevo usuario, y lo

84
00:03:37,030 --> 00:03:38,750
‫mismo ocurre con otras

85
00:03:38,750 --> 00:03:41,170
‫cosas, como por ejemplo, una foto.

86
00:03:41,170 --> 00:03:45,120
‫Entonces, esta es la solución rápida y fácil para ese problema.

87
00:03:45,120 --> 00:03:45,983
‫Ahora,

88
00:03:45,983 --> 00:03:49,890
‫lo que hará esto es que ya no podemos registrarnos

89
00:03:49,890 --> 00:03:52,570
‫como administradores, por lo que si necesitamos

90
00:03:52,570 --> 00:03:53,680
‫agregar un nuevo

91
00:03:53,680 --> 00:03:57,030
‫administrador a nuestro sistema, podemos simplemente crear un nuevo

92
00:03:57,030 --> 00:03:59,610
‫usuario normalmente y luego ir a

93
00:03:59,610 --> 00:04:02,440
‫MongoDB Compass, y básicamente editar ese rol allí.

94
00:04:02,440 --> 00:04:03,930
‫Así que edítelo

95
00:04:03,930 --> 00:04:06,470
‫de usuario a administrador manualmente, está bien.

96
00:04:06,470 --> 00:04:09,070
‫Por supuesto, también podríamos definir una

97
00:04:09,070 --> 00:04:10,910
‫ruta especial solo

98
00:04:10,910 --> 00:04:13,610
‫para crear administradores, pero eso sería demasiado.

99
00:04:13,610 --> 00:04:16,210
‫Bien, sigamos ahora.

100
00:04:16,210 --> 00:04:18,820
‫Solo tenga en cuenta que el código en el

101
00:04:18,820 --> 00:04:20,790
‫resto del video y todos los

102
00:04:20,790 --> 00:04:25,090
‫videos en este curso, por supuesto, seguirá siendo esta versión antigua incorrecta, está bien,

103
00:04:25,090 --> 00:04:27,270
‫pero en realidad en el código final

104
00:04:27,270 --> 00:04:29,240
‫que está en el repositorio

105
00:04:29,240 --> 00:04:32,773
‫de GitHub, ya lo arreglé y nosotros tener el código correcto allí.

106
00:04:33,610 --> 00:04:37,770
‫De todos modos, por lo general, cuando nos registramos en cualquier

107
00:04:37,770 --> 00:04:41,060
‫aplicación web, también inicia sesión automáticamente, ¿verdad? Así

108
00:04:41,060 --> 00:04:43,500
‫que impleméntalo muy rápidamente aquí.

109
00:04:43,500 --> 00:04:45,350
‫Así que inicie sesión con el

110
00:04:45,350 --> 00:04:48,120
‫nuevo usuario, tan pronto como se haya registrado, está

111
00:04:48,120 --> 00:04:50,090
‫bien, y recuerde de la lección

112
00:04:50,090 --> 00:04:51,680
‫anterior, cómo funciona eso, bueno,

113
00:04:51,680 --> 00:04:53,440
‫todo lo que realmente tenemos

114
00:04:53,440 --> 00:04:55,350
‫que hacer es firmar un token

115
00:04:55,350 --> 00:04:58,490
‫web de Jason y luego enviárselo al usuario. , está

116
00:04:58,490 --> 00:05:01,270
‫bien, pero primero instalemos el paquete MPM que usaremos

117
00:05:01,270 --> 00:05:03,350
‫para todo lo relacionado con los tokens

118
00:05:03,350 --> 00:05:04,893
‫web de Jason.

119
00:05:06,160 --> 00:05:08,180
‫Entonces, en nuestra otra terminal, digamos

120
00:05:08,180 --> 00:05:12,660
‫que la instalación de MPM, Jason web token, así que todo esto junto

121
00:05:12,660 --> 00:05:14,370
‫de esta manera y

122
00:05:16,240 --> 00:05:18,630
‫luego debería instalar este paquete y, de

123
00:05:18,630 --> 00:05:19,790
‫hecho, sigamos

124
00:05:19,790 --> 00:05:22,211
‫adelante y echemos un vistazo en GitHub,

125
00:05:22,211 --> 00:05:23,950
‫solo para ver la documentación

126
00:05:28,000 --> 00:05:29,380
‫y haz eso

127
00:05:29,380 --> 00:05:31,830
‫aquí, ya no necesitamos este aquí al

128
00:05:33,370 --> 00:05:38,370
‫menos por ahora, por lo que esto nos llevará a la página sobre MPM,

129
00:05:38,810 --> 00:05:40,300
‫y para que veas

130
00:05:40,300 --> 00:05:42,170
‫lo popular que es este

131
00:05:42,170 --> 00:05:45,100
‫paquete, tenemos 2. 3 millones de descargas

132
00:05:45,100 --> 00:05:47,930
‫semanales, por lo que realmente son un montón de

133
00:05:47,930 --> 00:05:50,730
‫descargas y también podemos echar un vistazo a

134
00:05:50,730 --> 00:05:53,540
‫la documentación aquí, pero personalmente prefiero hacerlo en GitHub.

135
00:05:53,540 --> 00:05:56,090
‫Creo que se ve mucho más limpio aquí,

136
00:05:56,090 --> 00:05:58,240
‫y estoy tan acostumbrado a

137
00:05:58,240 --> 00:06:02,410
‫él en este punto, por lo que generalmente lo veo aquí, está bien.

138
00:06:02,410 --> 00:06:04,690
‫De todos modos, la primera función que

139
00:06:04,690 --> 00:06:08,070
‫usaremos con JWT aquí es firmar, está bien, así que

140
00:06:08,070 --> 00:06:11,320
‫para básicamente crear un nuevo token, y para eso, por

141
00:06:11,320 --> 00:06:13,330
‫supuesto, necesitamos la carga útil, necesitamos

142
00:06:13,330 --> 00:06:16,080
‫la clave para ese secreto privado que mencioné.

143
00:06:16,080 --> 00:06:17,280
‫antes, eso

144
00:06:17,280 --> 00:06:19,750
‫solo está almacenado en nuestro servidor y

145
00:06:19,750 --> 00:06:21,607
‫necesitamos firmar el token y

146
00:06:21,607 --> 00:06:23,830
‫luego podemos pasar algunas opciones y

147
00:06:23,830 --> 00:06:26,040
‫haremos todo eso en un segundo,

148
00:06:26,040 --> 00:06:29,270
‫solo quiero mostrar la otra función que tenemos aquí,

149
00:06:29,270 --> 00:06:32,040
‫y que realmente tenemos un montón de opciones

150
00:06:32,040 --> 00:06:34,149
‫aquí, por ejemplo, el expira en,

151
00:06:34,149 --> 00:06:36,353
‫que usaremos para usar también, así

152
00:06:38,070 --> 00:06:39,830
‫que todas estas cosas

153
00:06:39,830 --> 00:06:41,600
‫y luego tenemos que verificar.

154
00:06:41,600 --> 00:06:44,200
‫Así que también hablamos sobre el proceso de

155
00:06:44,200 --> 00:06:47,700
‫verificación y eso está básicamente implementado en esta función, está bien,

156
00:06:47,700 --> 00:06:49,490
‫y este es el que

157
00:06:49,490 --> 00:06:52,740
‫usaremos, cuando inicie sesión como usuario, está bien, y eso

158
00:06:52,740 --> 00:06:54,610
‫es todo lo que hay,

159
00:06:54,610 --> 00:06:56,858
‫así que tienes todo estas opciones

160
00:06:56,858 --> 00:06:58,400
‫diferentes aquí, está bien,

161
00:06:58,400 --> 00:07:01,140
‫también tienes decodificación pero esa no es realmente

162
00:07:01,140 --> 00:07:03,990
‫importante, está bien, entonces ves que este paquete realmente

163
00:07:03,990 --> 00:07:04,980
‫solo incluye

164
00:07:04,980 --> 00:07:07,870
‫las dos funcionalidades que discutimos en el video anterior.

165
00:07:07,870 --> 00:07:11,683
‫Entonces firmando y luego verificando, está bien.

166
00:07:12,590 --> 00:07:15,060
‫Así que volvamos aquí y comencemos

167
00:07:15,060 --> 00:07:18,193
‫a usar el paquete de tokens web de Jason.

168
00:07:19,830 --> 00:07:21,363
‫Así que importémoslo

169
00:07:24,380 --> 00:07:26,800
‫aquí, y generalmente se llama simplemente

170
00:07:31,040 --> 00:07:33,920
‫JWT y requiere el token web de Jason.

171
00:07:33,920 --> 00:07:37,053
‫De acuerdo, creemos nuestro token aquí, de acuerdo, y

172
00:07:39,290 --> 00:07:40,460
‫me gustaría simplemente

173
00:07:40,460 --> 00:07:43,710
‫llamarlo así, así que solo token, de acuerdo, luego

174
00:07:43,710 --> 00:07:48,080
‫el signo de punto JWT, y ahora lo primero es la carga útil,

175
00:07:48,080 --> 00:07:50,460
‫y esto es básicamente un objeto para

176
00:07:50,460 --> 00:07:52,650
‫todos. los datos que vamos a

177
00:07:52,650 --> 00:07:55,260
‫almacenar dentro del token, y en este caso,

178
00:07:55,260 --> 00:07:56,093
‫realmente

179
00:07:56,093 --> 00:07:59,410
‫solo queremos la identificación del usuario, de acuerdo, así que

180
00:07:59,410 --> 00:08:02,210
‫no hay nada loco aquí, no muchos datos

181
00:08:02,210 --> 00:08:04,150
‫que no sean realmente importantes.

182
00:08:04,150 --> 00:08:06,890
‫Entonces decimos que la ID es y luego

183
00:08:06,890 --> 00:08:09,550
‫simplemente obtenemos la ID del nuevo usuario

184
00:08:09,550 --> 00:08:12,830
‫que se acaba de crear, de acuerdo, entonces el

185
00:08:12,830 --> 00:08:17,530
‫nuevo usuario marca el punto y luego recuerda que en MonogoDB, la ID en

186
00:08:17,530 --> 00:08:21,460
‫realidad se llama ID de subrayado, de acuerdo, y entonces es

187
00:08:21,460 --> 00:08:23,760
‫el objeto que son los

188
00:08:23,760 --> 00:08:27,083
‫datos, la carga útil, que queremos poner en nuestro JWT.

189
00:08:27,920 --> 00:08:30,820
‫A continuación, necesitamos el secreto, está bien, básicamente

190
00:08:30,820 --> 00:08:32,090
‫una cadena para

191
00:08:33,580 --> 00:08:35,350
‫un secreto, está bien, por

192
00:08:35,350 --> 00:08:38,530
‫supuesto, esto es terrible, está bien, esto es una

193
00:08:38,530 --> 00:08:40,340
‫especie de marcador de posición

194
00:08:40,340 --> 00:08:42,770
‫porque en realidad, nuestro archivo de configuración

195
00:08:42,770 --> 00:08:46,720
‫es un lugar perfecto para almacenar este tipo de datos secretos, así

196
00:08:46,720 --> 00:08:49,460
‫como la contraseña, por ejemplo, y vamos a

197
00:08:49,460 --> 00:08:53,633
‫agregar y editar aquí, de acuerdo, así que llamémoslo JWT, secreto y,

198
00:08:55,720 --> 00:09:00,070
‫por supuesto, el nombre que le damos aquí, realmente no importa, pero lo

199
00:09:00,070 --> 00:09:02,220
‫que importa es el secreto que

200
00:09:02,220 --> 00:09:03,430
‫especificamos aquí,

201
00:09:03,430 --> 00:09:06,920
‫de acuerdo, porque usando el cifrado estándar HSA 256 para

202
00:09:06,920 --> 00:09:11,920
‫la firma, el secreto debe tener al menos treinta y dos caracteres, de acuerdo, pero

203
00:09:11,940 --> 00:09:15,320
‫cuanto más largo, mejor en realidad y aquí es donde

204
00:09:15,320 --> 00:09:17,880
‫muchos los tutoriales fallan, algunos de ellos

205
00:09:17,880 --> 00:09:19,847
‫simplemente colocan una cadena muy corta

206
00:09:19,847 --> 00:09:22,240
‫aquí, pero eso no es ideal nuevamente,

207
00:09:22,240 --> 00:09:25,280
‫así que para el mejor cifrado de la firma,

208
00:09:25,280 --> 00:09:27,010
‫nuevamente debes usar al

209
00:09:27,010 --> 00:09:29,290
‫menos treinta y dos caracteres, así

210
00:09:29,290 --> 00:09:32,940
‫que voy a crear mi secreto aquí ahora pero realmente deberías

211
00:09:32,940 --> 00:09:34,584
‫usar otro, está bien,

212
00:09:34,584 --> 00:09:37,763
‫por favor no uses el sa yo uno como

213
00:09:37,763 --> 00:09:40,490
‫lo estoy haciendo porque eso podría convertirse en

214
00:09:40,490 --> 00:09:42,590
‫un problema de seguridad para su

215
00:09:42,590 --> 00:09:44,180
‫aplicación, está bien, siempre

216
00:09:44,180 --> 00:09:47,460
‫use un secreto único para sus aplicaciones y nunca el

217
00:09:47,460 --> 00:09:49,400
‫mismo, está bien, y especialmente

218
00:09:49,400 --> 00:09:52,100
‫no el de otra persona, así que definitivamente

219
00:09:52,100 --> 00:09:54,883
‫no es el que yo Estoy escribiendo ahora.

220
00:09:56,750 --> 00:09:57,820
‫Entonces esto

221
00:09:57,820 --> 00:10:00,160
‫puede ser cualquier cosa, no tiene

222
00:10:00,160 --> 00:10:02,390
‫por qué ser personajes raros

223
00:10:02,390 --> 00:10:04,443
‫o cosas así, prefiero usar

224
00:10:07,860 --> 00:10:10,903
‫una frase como esta, mi secreto ultra seguro

225
00:10:11,990 --> 00:10:13,363
‫y ultra largo,

226
00:10:14,690 --> 00:10:17,670
‫entonces, ¿qué pasó aquí? este es el

227
00:10:17,670 --> 00:10:18,730
‫que

228
00:10:18,730 --> 00:10:21,400
‫usaremos para mis tokens web de

229
00:10:21,400 --> 00:10:24,193
‫Jason, pero nuevamente, use otro, de acuerdo.

230
00:10:25,489 --> 00:10:29,290
‫De todos modos, volvamos al controlador de autenticación aquí,

231
00:10:29,290 --> 00:10:30,733
‫y ahora utilícelo.

232
00:10:31,810 --> 00:10:34,970
‫Así que recuerde que una variable

233
00:10:34,970 --> 00:10:39,913
‫de entorno es proceso punto final punto JWT secreto, de

234
00:10:41,100 --> 00:10:42,100
‫acuerdo.

235
00:10:42,100 --> 00:10:44,490
‫Entonces, en este punto, tenemos la carga

236
00:10:44,490 --> 00:10:46,320
‫útil y tenemos el secreto.

237
00:10:46,320 --> 00:10:49,400
‫El encabezado del token se creará automáticamente, pero ahora

238
00:10:49,400 --> 00:10:50,670
‫lo que

239
00:10:50,670 --> 00:10:52,390
‫también podemos hacer es pasar

240
00:10:52,390 --> 00:10:54,470
‫algunas opciones, y la opción que

241
00:10:54,470 --> 00:10:57,390
‫voy a pasar es cuándo debería expirar el JWT.

242
00:10:57,390 --> 00:10:59,600
‫Entonces, esto significa que después del tiempo

243
00:10:59,600 --> 00:11:01,240
‫que vamos a pasar aquí,

244
00:11:01,240 --> 00:11:03,110
‫el token web de Jason ya

245
00:11:03,110 --> 00:11:04,240
‫no será

246
00:11:04,240 --> 00:11:06,890
‫válido, incluso si de lo contrario se verificaría correctamente,

247
00:11:06,890 --> 00:11:08,060
‫de acuerdo, así que

248
00:11:08,060 --> 00:11:10,570
‫esto es básicamente para cerrar la sesión de

249
00:11:10,570 --> 00:11:12,670
‫un usuario después de un cierto período

250
00:11:12,670 --> 00:11:15,320
‫de tiempo simplemente como medida de seguridad, de acuerdo.

251
00:11:15,320 --> 00:11:19,500
‫Así que definamos ese tiempo de vencimiento también como

252
00:11:19,500 --> 00:11:21,493
‫una variable de configuración

253
00:11:23,320 --> 00:11:28,320
‫aquí, por lo que JWT caduca y aquí, por supuesto, puede

254
00:11:28,360 --> 00:11:30,536
‫usar el mismo tiempo que

255
00:11:30,536 --> 00:11:31,950
‫estoy poniendo.

256
00:11:31,950 --> 00:11:33,630
‫Entonces podemos usar una

257
00:11:33,630 --> 00:11:36,170
‫cadena especial como, por ejemplo, 90D y

258
00:11:36,170 --> 00:11:38,807
‫el algoritmo de firma se dará cuenta

259
00:11:38,807 --> 00:11:42,350
‫automáticamente de que esto significa noventa días, está bien, también

260
00:11:42,350 --> 00:11:47,350
‫podría usar como diez horas o cinco minutos o tres segundos o algo así,

261
00:11:47,360 --> 00:11:49,720
‫o simplemente cualquier número , que

262
00:11:49,720 --> 00:11:50,800
‫luego se

263
00:11:50,800 --> 00:11:53,330
‫tratará como milisegundos, pero creo que es

264
00:11:53,330 --> 00:11:55,820
‫mejor simplemente usar noventa o algo

265
00:11:55,820 --> 00:11:59,350
‫D, así que en este caso, noventa días, está bien,

266
00:11:59,350 --> 00:12:01,120
‫y nuevamente, después de

267
00:12:01,120 --> 00:12:03,860
‫noventa días, el JWT ya no será

268
00:12:03,860 --> 00:12:07,770
‫válido, incluso si la firma es correcta y todo es válido.

269
00:12:07,770 --> 00:12:11,503
‫De acuerdo, de nuevo, como una medida de seguridad

270
00:12:12,880 --> 00:12:13,713
‫adicional,

271
00:12:13,713 --> 00:12:17,180
‫de acuerdo, estas opciones, como siempre, las pasamos

272
00:12:17,180 --> 00:12:19,820
‫como un objeto y luego especificamos

273
00:12:19,820 --> 00:12:24,640
‫el expira en, entonces expira en y luego procesamos punto final y

274
00:12:26,120 --> 00:12:31,120
‫luego JWT expira en, de acuerdo, y esto aquí agregará algunos datos

275
00:12:32,050 --> 00:12:34,190
‫adicionales a la carga útil,

276
00:12:34,190 --> 00:12:35,530
‫pero eso, por

277
00:12:35,530 --> 00:12:37,480
‫supuesto, no es ningún problema.

278
00:12:38,410 --> 00:12:40,220
‫Así que acabamos de crear un token,

279
00:12:40,220 --> 00:12:41,500
‫ahora todo lo que

280
00:12:41,500 --> 00:12:43,463
‫tenemos que hacer es enviárselo al cliente.

281
00:12:44,910 --> 00:12:48,240
‫Así que pongámoslo aquí ante el usuario

282
00:12:48,240 --> 00:12:50,420
‫y eso es todo.

283
00:12:50,420 --> 00:12:53,350
‫Eso es realmente todo lo que tenemos que hacer

284
00:12:53,350 --> 00:12:54,840
‫para iniciar sesión como un

285
00:12:54,840 --> 00:12:56,250
‫nuevo usuario, porque en

286
00:12:56,250 --> 00:12:59,530
‫este momento no estamos verificando si alguna contraseña es correcta

287
00:12:59,530 --> 00:13:00,970
‫o si el usuario

288
00:13:00,970 --> 00:13:02,890
‫realmente existe en la base de

289
00:13:02,890 --> 00:13:03,840
‫datos porque

290
00:13:03,840 --> 00:13:05,880
‫aquí, en este caso, el usuario

291
00:13:05,880 --> 00:13:08,070
‫fue realmente creado y así que de

292
00:13:08,070 --> 00:13:10,010
‫inmediato, registramos al usuario en la

293
00:13:10,010 --> 00:13:12,780
‫aplicación enviando un token, está bien, y el uso

294
00:13:12,780 --> 00:13:15,430
‫del cliente debería almacenar ese token de alguna

295
00:13:15,430 --> 00:13:16,760
‫manera, tal como lo

296
00:13:16,760 --> 00:13:21,370
‫mencionamos antes en la lección anterior, está bien, así que vamos a guardarlo aquí, y

297
00:13:21,370 --> 00:13:24,160
‫probémoslo, de acuerdo, así que déjanos mi antigua dirección

298
00:13:24,160 --> 00:13:27,040
‫aquí, hola @ jonas. io, enviémoslo y esperemos

299
00:13:27,040 --> 00:13:29,210
‫y, de hecho, aquí está nuestro

300
00:13:29,210 --> 00:13:32,910
‫token web de Jason, así que enhorabuena, acaba de crear su

301
00:13:32,910 --> 00:13:35,050
‫primer token web de Jason, que

302
00:13:35,050 --> 00:13:37,490
‫debería verse un poco así, y por

303
00:13:37,490 --> 00:13:39,760
‫supuesto no se verá exactamente igual.

304
00:13:39,760 --> 00:13:42,310
‫Lo mismo, porque nuestro secreto tampoco es

305
00:13:42,310 --> 00:13:45,360
‫el mismo, cierto, y ahora lo que quiero mostrarles

306
00:13:45,360 --> 00:13:46,770
‫es el depurador

307
00:13:46,770 --> 00:13:48,810
‫JWT, que les mostré como captura

308
00:13:48,810 --> 00:13:50,730
‫de pantalla anteriormente en el

309
00:13:50,730 --> 00:13:52,010
‫último video.

310
00:13:52,010 --> 00:13:54,140
‫Así que sigamos y copiemos

311
00:13:56,050 --> 00:14:00,453
‫este token y luego vayamos a JWT. io, está bien, entonces

312
00:14:02,850 --> 00:14:03,683
‫aquí

313
00:14:04,540 --> 00:14:06,790
‫abajo tenemos el depurador,

314
00:14:06,790 --> 00:14:10,683
‫así que eliminemos este aquí, y coloquemos el nuestro

315
00:14:12,170 --> 00:14:14,830
‫y de inmediato verá que nuestra

316
00:14:14,830 --> 00:14:17,580
‫firma no es válida, pero eso

317
00:14:17,580 --> 00:14:20,570
‫es porque la función de signo edita

318
00:14:20,570 --> 00:14:22,090
‫estas dos propiedades

319
00:14:22,090 --> 00:14:25,140
‫aquí, porque especificamos un vencimiento fecha básicamente.

320
00:14:25,140 --> 00:14:27,600
‫Entonces, esto aquí se emite en,

321
00:14:27,600 --> 00:14:30,223
‫y este es el tiempo de vencimiento,

322
00:14:31,450 --> 00:14:35,050
‫está bien, si eliminamos estos dos de aquí, verá que

323
00:14:35,050 --> 00:14:36,350
‫ahora, esta

324
00:14:36,350 --> 00:14:38,620
‫firma está realmente verificada, está bien,

325
00:14:38,620 --> 00:14:42,260
‫así que lo que es importante notar aquí es que,

326
00:14:42,260 --> 00:14:44,815
‫por supuesto, el encabezado es visible, está

327
00:14:44,815 --> 00:14:47,840
‫bien, básicamente es fácilmente decodificable, por lo que

328
00:14:47,840 --> 00:14:50,820
‫no especificamos nada de esto, fue el paquete

329
00:14:50,820 --> 00:14:54,530
‫de token web de Jason el que lo hizo por

330
00:14:54,530 --> 00:14:58,560
‫nosotros, pero aquí está la carga útil que especificamos, así que

331
00:14:58,560 --> 00:15:00,800
‫si echamos un vistazo en este

332
00:15:00,800 --> 00:15:03,860
‫ID, debería ser exactamente el mismo que tenemos

333
00:15:03,860 --> 00:15:06,343
‫en cartero, por lo que termina en

334
00:15:07,960 --> 00:15:11,493
‫seis OF, y de hecho, es exactamente el mismo derecho,

335
00:15:13,600 --> 00:15:16,260
‫está bien, entonces estos dos aquí están

336
00:15:16,260 --> 00:15:19,920
‫abiertos y luego la firma, por supuesto, no podemos realmente

337
00:15:19,920 --> 00:15:22,930
‫veo, porque, por supuesto, nuestro secreto es solo

338
00:15:22,930 --> 00:15:26,270
‫eso, es realmente secreto, está bien, así que esto

339
00:15:26,270 --> 00:15:29,600
‫fue solo para mostrarles que todo funciona, y cerremos

340
00:15:29,600 --> 00:15:31,242
‫esto, y sí, no

341
00:15:31,242 --> 00:15:35,550
‫podemos iniciar sesión en los usuarios, pero solo si el usuario acaba

342
00:15:35,550 --> 00:15:38,050
‫de registrarse, porque en ese caso, no

343
00:15:38,050 --> 00:15:40,980
‫necesitamos verificar el correo electrónico en la base

344
00:15:40,980 --> 00:15:42,290
‫de datos, y

345
00:15:42,290 --> 00:15:44,490
‫tampoco el contraseña, está bien.

346
00:15:44,490 --> 00:15:47,400
‫Entonces, hacer todo eso es un proceso mucho más complejo,

347
00:15:47,400 --> 00:15:49,340
‫y eso es lo que haremos

348
00:15:49,340 --> 00:15:50,940
‫en la próxima lección,

349
00:15:50,940 --> 00:15:53,660
‫así que a continuación, iniciaremos la sesión de los

350
00:15:53,660 --> 00:15:56,543
‫usuarios, según su dirección de correo electrónico y su contraseña.

