﻿1
00:00:01,190 --> 00:00:03,320
‫Istruttore: In questo video e nei

2
00:00:03,320 --> 00:00:05,380
‫prossimi, implementeremo una funzionalità di

3
00:00:05,380 --> 00:00:08,670
‫reimpostazione della password intuitiva, che è una specie di

4
00:00:08,670 --> 00:00:11,253
‫standard nella maggior parte delle applicazioni web.

5
00:00:12,750 --> 00:00:15,390
‫E probabilmente, hai già utilizzato la reimpostazione della password

6
00:00:15,390 --> 00:00:17,720
‫su alcuni siti Web e di solito

7
00:00:17,720 --> 00:00:19,140
‫funziona in questo modo.

8
00:00:19,140 --> 00:00:21,280
‫Devi solo fornire il tuo indirizzo

9
00:00:21,280 --> 00:00:23,490
‫e-mail e riceverai un'e-mail con un link

10
00:00:23,490 --> 00:00:25,950
‫su cui puoi fare clic e questo ti

11
00:00:25,950 --> 00:00:29,410
‫porterà a una pagina in cui puoi inserire una nuova password.

12
00:00:29,410 --> 00:00:32,270
‫Questa è una procedura molto standard e quindi

13
00:00:32,270 --> 00:00:34,160
‫è anche come la implementeremo

14
00:00:34,160 --> 00:00:35,890
‫qui in questa applicazione.

15
00:00:35,890 --> 00:00:37,700
‫Fondamentalmente ci sono due passaggi.

16
00:00:37,700 --> 00:00:40,930
‫Per il primo è che l'utente invia una richiesta

17
00:00:40,930 --> 00:00:45,260
‫di posta a un percorso con password dimenticata, solo con questo indirizzo email.

18
00:00:45,260 --> 00:00:47,510
‫Questo creerà quindi un token

19
00:00:47,510 --> 00:00:50,830
‫di ripristino e lo invierà all'indirizzo e-mail fornito.

20
00:00:50,830 --> 00:00:54,930
‫Solo un semplice token casuale, non un token Web JSON.

21
00:00:54,930 --> 00:00:56,610
‫Questa è una differenza qui.

22
00:00:56,610 --> 00:00:59,507
‫Quindi nella seconda parte, che sarà il

23
00:00:59,507 --> 00:01:02,800
‫prossimo video, l'utente invia quel token dalla sua e-mail

24
00:01:02,800 --> 00:01:06,553
‫insieme a una nuova password per aggiornare la sua password.

25
00:01:08,040 --> 00:01:13,040
‫Fondamentalmente, avremo esportazioni punto password dimenticata che è il

26
00:01:14,810 --> 00:01:16,173
‫primo passo.

27
00:01:17,930 --> 00:01:22,930
‫Quindi richiesta, risposta e poi, come secondo passaggio,

28
00:01:25,560 --> 00:01:28,703
‫abbiamo reimpostato la password.

29
00:01:33,480 --> 00:01:37,260
‫Allora andiamo avanti anche noi e implementiamo questi due percorsi.

30
00:01:37,260 --> 00:01:40,520
‫Ok, e questo è, ovviamente, nel loro router utente o nel

31
00:01:40,520 --> 00:01:42,053
‫file dei percorsi utente.

32
00:01:43,190 --> 00:01:45,640
‫Mettiamole anche qui e in

33
00:01:45,640 --> 00:01:48,793
‫realtà posso semplicemente duplicare queste righe qui.

34
00:01:51,131 --> 00:01:54,593
‫Quindi abbiamo nuovamente dimenticato la password,

35
00:01:55,820 --> 00:01:58,170
‫che riceverà solo

36
00:01:58,170 --> 00:02:03,170
‫l'indirizzo e-mail e quindi reimposta la password, che riceverà

37
00:02:03,260 --> 00:02:06,983
‫il token oltre alla nuova password.

38
00:02:09,360 --> 00:02:10,530
‫Questo è quello

39
00:02:10,530 --> 00:02:13,220
‫che inizieremo ad implementare in questa lezione.

40
00:02:13,220 --> 00:02:17,570
‫Come prima, specifichiamo qui i nostri passaggi.

41
00:02:17,570 --> 00:02:20,510
‫Quindi, per prima cosa, ottieni l'utente

42
00:02:23,180 --> 00:02:25,890
‫in base all'e-mail pubblicata,

43
00:02:29,590 --> 00:02:32,383
‫quindi genera il token casuale.

44
00:02:37,090 --> 00:02:40,043
‫E poi in pratica rispedirlo come e-mail.

45
00:02:45,910 --> 00:02:48,793
‫Questa roba è abbastanza comune per noi a questo punto.

46
00:02:49,680 --> 00:02:54,397
‫Quindi utente, quindi aspettiamo che l'utente trovi il punto e ora

47
00:02:55,330 --> 00:02:57,650
‫ne trova uno, non

48
00:02:57,650 --> 00:03:00,920
‫trova per ID perché non conosciamo l'ID dell'utente.

49
00:03:00,920 --> 00:03:04,240
‫E l'utente, ovviamente, non conosce il proprio ID

50
00:03:04,240 --> 00:03:06,733
‫e quindi abbiamo specificato l'indirizzo email.

51
00:03:08,390 --> 00:03:11,363
‫Fondamentalmente è l'unico dato noto.

52
00:03:12,230 --> 00:03:16,823
‫E questo è l'indirizzo e-mail su richiesta dot body dot.

53
00:03:18,723 --> 00:03:20,580
‫E ovviamente ora dobbiamo dire

54
00:03:20,580 --> 00:03:25,390
‫che siamo in una funzione asincrona e quindi, proprio come prima, avvolgiamola

55
00:03:25,390 --> 00:03:27,183
‫in catch async.

56
00:03:30,690 --> 00:03:33,263
‫Dagli un salvataggio e l'errore dovrebbe essere sparito.

57
00:03:35,280 --> 00:03:36,710
‫Quindi il passaggio successivo, verifichiamo

58
00:03:36,710 --> 00:03:38,103
‫se l'utente esiste.

59
00:03:39,160 --> 00:03:44,160
‫Quindi, se nessun utente, torna al middleware successivo insieme,

60
00:03:48,950 --> 00:03:51,790
‫ovviamente, a un nuovo errore.

61
00:03:51,790 --> 00:03:56,790
‫Nessun utente con quell'indirizzo email.

62
00:03:59,190 --> 00:04:02,510
‫E poi possiamo mettere un 404, che come già

63
00:04:02,510 --> 00:04:04,023
‫sai, significa non trovato.

64
00:04:05,567 --> 00:04:09,310
‫Successivamente, generiamo il token casuale e per

65
00:04:09,310 --> 00:04:11,600
‫questo, ancora una

66
00:04:11,600 --> 00:04:14,610
‫volta, creeremo un metodo istantaneo sull'utente.

67
00:04:14,610 --> 00:04:17,430
‫Perché ancora una volta, questo ha davvero a che fare

68
00:04:17,430 --> 00:04:19,183
‫con i dati dell'utente stessi.

69
00:04:20,280 --> 00:04:22,660
‫E scriveremo davvero un po' di

70
00:04:22,660 --> 00:04:25,160
‫codice, quindi, se fosse solo una riga

71
00:04:25,160 --> 00:04:27,600
‫di codice, allora potremmo inserirla proprio qui.

72
00:04:27,600 --> 00:04:29,540
‫Ma abbiamo bisogno di un paio

73
00:04:29,540 --> 00:04:31,830
‫di righe di codice e quindi, di nuovo, è

74
00:04:31,830 --> 00:04:34,080
‫un po' più pulito separarlo in una propria funzione.

75
00:04:34,080 --> 00:04:37,823
‫E quello di solito con Mongoose è il migliore come metodo istantaneo.

76
00:04:40,500 --> 00:04:45,490
‫Quindi quaggiù, modifichiamo qui alla fine.

77
00:04:45,490 --> 00:04:50,490
‫Quindi i metodi dei punti dello schema utente creano un token di reimpostazione della password.

78
00:04:57,900 --> 00:04:59,950
‫Un nome piuttosto lungo e descrittivo.

79
00:04:59,950 --> 00:05:02,020
‫Mi piace farlo così, così

80
00:05:02,020 --> 00:05:05,253
‫so esattamente con cosa ho a che fare.

81
00:05:07,600 --> 00:05:11,690
‫Il token di reimpostazione della password dovrebbe essere fondamentalmente una stringa casuale

82
00:05:11,690 --> 00:05:13,650
‫ma, allo stesso tempo, non

83
00:05:13,650 --> 00:05:17,250
‫deve essere crittograficamente forte come l'hash della password che abbiamo

84
00:05:17,250 --> 00:05:18,433
‫creato in precedenza.

85
00:05:19,640 --> 00:05:22,720
‫Possiamo semplicemente usare la funzione di byte casuali

86
00:05:22,720 --> 00:05:25,083
‫molto semplice dal modulo crittografico integrato.

87
00:05:27,350 --> 00:05:30,173
‫Andiamo avanti e aggiungiamolo davvero.

88
00:05:35,620 --> 00:05:40,620
‫Crypto richiede e, di nuovo, è un modulo nodo integrato, quindi

89
00:05:40,870 --> 00:05:43,203
‫non è necessario installare nulla.

90
00:05:44,700 --> 00:05:45,800
‫Freddo.

91
00:05:45,800 --> 00:05:50,800
‫Ora, generiamo effettivamente il nostro token.

92
00:05:56,576 --> 00:05:59,913
‫E per questo, usiamo byte casuali di punti crittografici e

93
00:06:02,440 --> 00:06:04,750
‫quindi qui dobbiamo specificare fondamentalmente il numero

94
00:06:04,750 --> 00:06:05,893
‫di caratteri.

95
00:06:07,490 --> 00:06:09,530
‫E poi, alla fine,

96
00:06:09,530 --> 00:06:11,823
‫lo convertiamo in una stringa esadecimale.

97
00:06:14,045 --> 00:06:14,910
‫Due

98
00:06:17,020 --> 00:06:20,723
‫stringhe e quindi possiamo specificare l'opzione esadecimale qui.

99
00:06:22,060 --> 00:06:23,690
‫Ora, se ti

100
00:06:23,690 --> 00:06:25,360
‫stai chiedendo perché stiamo effettivamente

101
00:06:25,360 --> 00:06:28,710
‫creando questo token, immagino di non averlo ancora spiegato davvero.

102
00:06:28,710 --> 00:06:31,170
‫Fondamentalmente questo token è ciò che

103
00:06:31,170 --> 00:06:34,660
‫invieremo all'utente e quindi è come una password di ripristino

104
00:06:34,660 --> 00:06:38,610
‫che l'utente può quindi utilizzare per creare una nuova password reale.

105
00:06:38,610 --> 00:06:41,690
‫E, naturalmente, solo l'utente avrà accesso a questo token.

106
00:06:41,690 --> 00:06:45,363
‫E quindi, in effetti, si comporta davvero come una password.

107
00:06:45,363 --> 00:06:48,380
‫Poiché essenzialmente è solo una password, significa

108
00:06:48,380 --> 00:06:52,210
‫che se un hacker può accedere al nostro database,

109
00:06:52,210 --> 00:06:55,000
‫allora ciò consentirà all'hacker di accedere

110
00:06:55,000 --> 00:06:57,483
‫all'account impostando una nuova password.

111
00:06:59,474 --> 00:07:01,740
‫Se memorizziamo semplicemente questo token di ripristino

112
00:07:01,740 --> 00:07:05,160
‫nel nostro database ora, se un utente malintenzionato ottiene l'accesso al

113
00:07:05,160 --> 00:07:07,200
‫database, potrebbe quindi utilizzare quel token

114
00:07:07,200 --> 00:07:10,090
‫e creare una nuova password utilizzando quel token invece

115
00:07:10,090 --> 00:07:11,690
‫di farlo tu.

116
00:07:11,690 --> 00:07:14,120
‫Quindi controllererebbero efficacemente il tuo account invece

117
00:07:14,120 --> 00:07:15,563
‫di farlo tu.

118
00:07:16,810 --> 00:07:19,150
‫Proprio come una password, non dovremmo

119
00:07:19,150 --> 00:07:21,933
‫mai memorizzare un semplice token di ripristino nel database.

120
00:07:23,030 --> 00:07:24,670
‫Criptiamolo in realtà, ma

121
00:07:24,670 --> 00:07:26,880
‫come prima con la password, non

122
00:07:26,880 --> 00:07:29,670
‫ha bisogno di un metodo di crittografia

123
00:07:29,670 --> 00:07:30,803
‫crittograficamente forte.

124
00:07:31,640 --> 00:07:34,653
‫Perché questi token di ripristino sono un vettore di

125
00:07:34,653 --> 00:07:35,993
‫attacco molto meno pericoloso.

126
00:07:37,050 --> 00:07:39,230
‫Ancora una volta, useremo solo il modulo

127
00:07:39,230 --> 00:07:40,233
‫crittografico integrato.

128
00:07:41,610 --> 00:07:44,213
‫Funziona in questo modo dall'aspetto strano.

129
00:07:45,420 --> 00:07:48,740
‫Diciamo crypto, quindi creiamo hash con l'algoritmo

130
00:07:51,170 --> 00:07:54,550
‫sha 256, quindi dobbiamo dire update e

131
00:07:55,750 --> 00:07:57,560
‫poi variabile

132
00:07:57,560 --> 00:08:00,593
‫in cui è memorizzato il token.

133
00:08:01,840 --> 00:08:04,340
‫Qualunque stringa vogliamo crittografare in pratica.

134
00:08:04,340 --> 00:08:08,570
‫E poi dobbiamo dire digest e poi di nuovo

135
00:08:08,570 --> 00:08:10,433
‫memorizzarlo come esadecimale.

136
00:08:12,950 --> 00:08:16,660
‫E ora dove salveremo effettivamente questo token di ripristino?

137
00:08:16,660 --> 00:08:19,883
‫Bene, creeremo un nuovo campo nel nostro schema del database.

138
00:08:20,886 --> 00:08:23,340
‫Perché ovviamente vogliamo salvarlo nel database, in

139
00:08:23,340 --> 00:08:24,940
‫modo da poterlo

140
00:08:24,940 --> 00:08:27,003
‫confrontare con il token fornito dall'utente.

141
00:08:30,037 --> 00:08:30,870
‫Facciamolo qui alla fine.

142
00:08:34,599 --> 00:08:36,349
‫Token di reimpostazione della password, questa

143
00:08:39,884 --> 00:08:41,248
‫è la stringa.

144
00:08:41,248 --> 00:08:44,331
‫E poi scade anche la reimpostazione della password.

145
00:08:49,890 --> 00:08:51,780
‫Perché questo ripristino scadrà

146
00:08:51,780 --> 00:08:56,100
‫effettivamente dopo un certo periodo di tempo come misura di sicurezza.

147
00:08:56,100 --> 00:08:58,820
‫Avrai solo 10 minuti per reimpostare effettivamente

148
00:08:58,820 --> 00:09:00,133
‫la tua password.

149
00:09:03,850 --> 00:09:05,500
‫Ora andiamo avanti e usiamo questi.

150
00:09:06,950 --> 00:09:11,950
‫Questo token di reimpostazione della password del punto è quindi uguale

151
00:09:13,440 --> 00:09:14,843
‫a questa crittografia.

152
00:09:19,270 --> 00:09:23,720
‫Successivamente, impostiamo la scadenza della reimpostazione della password e

153
00:09:24,570 --> 00:09:29,400
‫impostiamolo su data dot ora e quindi aggiungiamo semplicemente un

154
00:09:29,400 --> 00:09:32,193
‫paio di secondi a quello.

155
00:09:33,510 --> 00:09:35,910
‫Vogliamo che funzioni per 10 minuti

156
00:09:35,910 --> 00:09:40,093
‫e quindi sono 10 e poi ne abbiamo bisogno in millisecondi.

157
00:09:41,270 --> 00:09:46,270
‫Tempi 60 per secondi e poi volte 1000 per millisecondi.

158
00:09:49,124 --> 00:09:52,320
‫E poi voglio anche restituire il token di testo normale

159
00:09:52,320 --> 00:09:54,770
‫perché in realtà è quello che invieremo

160
00:09:54,770 --> 00:09:55,783
‫tramite l'e-mail.

161
00:09:58,080 --> 00:10:01,863
‫Restituisci token di ripristino.

162
00:10:06,345 --> 00:10:08,860
‫Dobbiamo inviare via e-mail il

163
00:10:08,860 --> 00:10:11,660
‫token di ripristino non crittografato perché

164
00:10:11,660 --> 00:10:14,503
‫altrimenti non avrebbe molto senso crittografarlo.

165
00:10:15,430 --> 00:10:17,090
‫Se il token che

166
00:10:17,090 --> 00:10:19,290
‫era nel database fosse esattamente lo stesso

167
00:10:19,290 --> 00:10:20,980
‫che potremmo usare per cambiare effettivamente

168
00:10:20,980 --> 00:10:23,643
‫la password, beh, allora non sarebbe affatto una crittografia.

169
00:10:24,640 --> 00:10:26,417
‫Abbiamo inviato un token via

170
00:10:26,417 --> 00:10:29,420
‫e-mail e quindi abbiamo la versione crittografata nel nostro database.

171
00:10:29,420 --> 00:10:32,210
‫E quello crittografato è quindi praticamente inutile

172
00:10:32,210 --> 00:10:34,050
‫per cambiare la password.

173
00:10:34,050 --> 00:10:36,250
‫È proprio come quando

174
00:10:36,250 --> 00:10:39,470
‫salviamo solo la password crittografata stessa

175
00:10:39,470 --> 00:10:43,230
‫nel database, proprio come abbiamo fatto qui, quindi

176
00:10:43,230 --> 00:10:46,967
‫dove abbiamo crittografato la password usando bcrypt.

177
00:10:48,439 --> 00:10:51,100
‫Tieni presente che l'unico in assoluto salva

178
00:10:51,100 --> 00:10:53,680
‫i dati sensibili in un formato crittografato

179
00:10:53,680 --> 00:10:56,620
‫e quindi confrontali con la versione crittografata presente

180
00:10:56,620 --> 00:10:57,770
‫nel database.

181
00:11:00,385 --> 00:11:02,500
‫Basta registrare questi due sulla console

182
00:11:02,500 --> 00:11:06,730
‫che renderà le nostre vite un po' più facili lungo la strada.

183
00:11:06,730 --> 00:11:09,630
‫Diciamo reset token e sto accedendo qui

184
00:11:10,470 --> 00:11:11,440
‫come oggetto

185
00:11:11,440 --> 00:11:14,930
‫perché in questo modo mi dirà effettivamente il nome

186
00:11:14,930 --> 00:11:17,803
‫della variabile insieme al suo valore.

187
00:11:20,210 --> 00:11:25,153
‫E poi lo stesso con questo token di reimpostazione della password del punto.

188
00:11:28,030 --> 00:11:29,880
‫Questo non funziona davvero con la

189
00:11:29,880 --> 00:11:32,340
‫scrittura di oggetti, questo nuovo modo ES6 e

190
00:11:32,340 --> 00:11:34,140
‫lasciamo le cose a questo.

191
00:11:36,550 --> 00:11:38,080
‫Comunque, torniamo qui

192
00:11:38,080 --> 00:11:40,153
‫e poi usiamo quella funzione.

193
00:11:41,660 --> 00:11:44,930
‫Quindi ricorda come abbiamo restituito il token di

194
00:11:44,930 --> 00:11:46,653
‫ripristino e memorizziamolo qui.

195
00:11:48,040 --> 00:11:52,873
‫Quindi il token di ripristino è uguale al set di punti utente e non

196
00:11:54,370 --> 00:11:56,373
‫sono più sicuro del nome.

197
00:11:58,500 --> 00:12:00,560
‫Crea un token di reimpostazione della password,

198
00:12:00,560 --> 00:12:01,633
‫quindi è lungo.

199
00:12:03,430 --> 00:12:06,240
‫Va bene e così è stato fatto, ma

200
00:12:06,240 --> 00:12:09,460
‫in realtà quello che abbiamo fatto è stato solo modificare

201
00:12:09,460 --> 00:12:10,943
‫i dati qui.

202
00:12:12,780 --> 00:12:16,580
‫Quando impostiamo questa password punto scade per esempio a

203
00:12:16,580 --> 00:12:19,040
‫questo valore, in effetti non abbiamo

204
00:12:19,040 --> 00:12:20,880
‫realmente aggiornato il documento.

205
00:12:20,880 --> 00:12:22,063
‫Non l'abbiamo salvato.

206
00:12:23,100 --> 00:12:24,880
‫In realtà lo

207
00:12:24,880 --> 00:12:27,563
‫modifichiamo, ma ora dobbiamo salvarlo.

208
00:12:29,950 --> 00:12:34,653
‫Diciamo che attendi il salvataggio del punto dell'utente.

209
00:12:36,750 --> 00:12:39,583
‫Ma guarda cosa succede mentre ora lo usiamo.

210
00:12:43,910 --> 00:12:46,463
‫Prendiamo questo qui.

211
00:12:50,980 --> 00:12:53,080
‫Questo è il percorso che abbiamo trovato prima.

212
00:12:54,440 --> 00:12:57,750
‫E ora otteniamo questo percorso non ancora definito.

213
00:12:57,750 --> 00:12:59,413
‫Vediamo perché è così.

214
00:13:00,290 --> 00:13:04,740
‫Nel percorso dell'utente, abbiamo chiaramente lo stesso URL qui, ma vedo che

215
00:13:04,740 --> 00:13:08,463
‫in realtà abbiamo bisogno di fare una richiesta di posta.

216
00:13:09,390 --> 00:13:13,380
‫Va bene, ok, ma ora riceviamo un errore che

217
00:13:13,380 --> 00:13:16,200
‫dice di fornire email e password.

218
00:13:16,200 --> 00:13:18,320
‫E quindi è quello che intendevo quando ho

219
00:13:18,320 --> 00:13:20,343
‫detto guarda cosa succede quando provi questo.

220
00:13:21,990 --> 00:13:25,330
‫Ciò accade perché stiamo cercando di salvare un documento,

221
00:13:25,330 --> 00:13:28,860
‫ma non specifichiamo tutti i dati obbligatori, quindi i

222
00:13:28,860 --> 00:13:31,453
‫campi che abbiamo contrassegnato come obbligatori.

223
00:13:32,502 --> 00:13:34,683
‫Risolviamolo rapidamente.

224
00:13:35,848 --> 00:13:38,888
‫Tutto ciò che dobbiamo fare è passare effettivamente un'opzione speciale

225
00:13:38,888 --> 00:13:41,643
‫in questo metodo di salvataggio dei punti utente.

226
00:13:43,140 --> 00:13:43,973
‫Diciamo

227
00:13:47,210 --> 00:13:48,720
‫convalida prima di salvare

228
00:13:49,890 --> 00:13:51,293
‫impostato su false.

229
00:13:52,332 --> 00:13:55,260
‫Questo disattiverà quindi tutti i validatori che abbiamo

230
00:13:55,260 --> 00:13:56,993
‫specificato nel nostro schema.

231
00:13:58,540 --> 00:14:01,100
‫Sono queste piccole cose che devi sapere

232
00:14:01,100 --> 00:14:02,800
‫che faranno la differenza.

233
00:14:03,790 --> 00:14:06,570
‫Ora, in realtà non sapevo nemmeno che esistesse

234
00:14:06,570 --> 00:14:09,170
‫perché nessuno conosce davvero tutte le cose.

235
00:14:09,170 --> 00:14:10,260
‫È impossibile.

236
00:14:10,260 --> 00:14:13,010
‫Una biblioteca come Mongoose è semplicemente troppo grande per farti

237
00:14:13,010 --> 00:14:14,833
‫sapere tutto quello che c'è.

238
00:14:16,010 --> 00:14:19,020
‫Sono andato avanti e ho letto la documentazione

239
00:14:19,020 --> 00:14:22,710
‫di Mongoose ed è lì che ho trovato questa opzione estremamente utile.

240
00:14:22,710 --> 00:14:25,050
‫Tutto questo solo per dire che

241
00:14:25,050 --> 00:14:26,520
‫nessuno sa tutto e

242
00:14:26,520 --> 00:14:28,520
‫quindi è davvero una buona abitudine,

243
00:14:28,520 --> 00:14:29,960
‫se incontri

244
00:14:29,960 --> 00:14:31,830
‫qualche problema, dare un'occhiata alla

245
00:14:31,830 --> 00:14:34,210
‫documentazione per la libreria che stai utilizzando.

246
00:14:34,210 --> 00:14:35,963
‫Diamo un'occhiata a questo ora.

247
00:14:39,410 --> 00:14:42,260
‫E riceviamo ancora lo stesso errore qui, ma

248
00:14:42,260 --> 00:14:43,890
‫vedo qui che in

249
00:14:43,890 --> 00:14:45,883
‫realtà proviene dalla funzione di accesso.

250
00:14:48,210 --> 00:14:50,573
‫Diamo un'occhiata a cosa sta succedendo qui.

251
00:14:51,490 --> 00:14:54,550
‫Diamo un'occhiata anche ai percorsi.

252
00:14:54,550 --> 00:14:56,343
‫Ah, ok, quindi ecco il problema.

253
00:14:57,610 --> 00:14:59,420
‫Ora stiamo provando a chiamare

254
00:14:59,420 --> 00:15:02,170
‫il gestore di accesso, che ovviamente non ha senso.

255
00:15:03,660 --> 00:15:05,790
‫Qui è la password dimenticata.

256
00:15:05,790 --> 00:15:07,633
‫Qui è reimpostare la password.

257
00:15:08,850 --> 00:15:12,290
‫E quindi l'errore che abbiamo ricevuto prima in realtà non era

258
00:15:12,290 --> 00:15:13,463
‫dovuto alla convalida.

259
00:15:16,312 --> 00:15:17,980
‫Inviamo questo di nuovo e

260
00:15:17,980 --> 00:15:20,100
‫ora riceviamo l'errore che non c'è

261
00:15:20,100 --> 00:15:21,420
‫nessun utente con

262
00:15:21,420 --> 00:15:24,140
‫questo indirizzo e-mail e quindi questo perché non abbiamo

263
00:15:24,140 --> 00:15:26,103
‫specificato alcun indirizzo e-mail nel corpo.

264
00:15:28,390 --> 00:15:29,680
‫L'abbiamo testato

265
00:15:29,680 --> 00:15:32,300
‫e quindi ora è il momento di

266
00:15:32,300 --> 00:15:34,093
‫testarlo effettivamente con un'e-mail dell'utente.

267
00:15:43,409 --> 00:15:44,440
‫Va bene.

268
00:15:44,440 --> 00:15:46,380
‫E quindi ora in realtà

269
00:15:46,380 --> 00:15:49,320
‫non dovrebbe fare nulla perché non inviamo alcuna risposta.

270
00:15:49,320 --> 00:15:50,700
‫Cancelliamolo perché tutto

271
00:15:50,700 --> 00:15:52,540
‫ciò che mi interessava

272
00:15:52,540 --> 00:15:55,227
‫era vedere questi token qui e

273
00:15:55,227 --> 00:15:57,830
‫poi anche dare un'occhiata all'oggetto utente.

274
00:15:57,830 --> 00:16:01,050
‫Questo qui è il token di ripristino originale, quindi

275
00:16:01,050 --> 00:16:04,150
‫vedi che è una stringa esadecimale casuale e

276
00:16:04,150 --> 00:16:06,593
‫poi abbiamo quello crittografato qui.

277
00:16:07,840 --> 00:16:11,330
‫Questo ricordo è quello che non dovrebbe essere nel

278
00:16:11,330 --> 00:16:13,663
‫database, quindi termina con a901.

279
00:16:14,930 --> 00:16:16,230
‫Diamo un'occhiata a questo.

280
00:16:18,410 --> 00:16:20,460
‫E infatti, eccolo qui,

281
00:16:20,460 --> 00:16:24,740
‫il token di reimpostazione della password che termina con questo a901.

282
00:16:24,740 --> 00:16:28,960
‫E anche la data, che infatti è tra 10 minuti.

283
00:16:28,960 --> 00:16:31,753
‫Ora sai a che ora sto registrando questo video.

284
00:16:33,130 --> 00:16:35,340
‫Comunque, ma questo ha funzionato bene.

285
00:16:35,340 --> 00:16:37,890
‫E quindi questa è in realtà la

286
00:16:37,890 --> 00:16:41,561
‫prima parte della creazione di questa funzionalità di reimpostazione della password.

287
00:16:41,561 --> 00:16:43,140
‫Nel prossimo video, invieremo

288
00:16:43,140 --> 00:16:46,840
‫quindi questo token qui via e-mail all'utente e quindi in

289
00:16:46,840 --> 00:16:49,500
‫realtà abbiamo preparato un video separato solo

290
00:16:49,500 --> 00:16:52,370
‫per imparare come inviare effettivamente e-mail con node

291
00:16:52,370 --> 00:16:53,470
‫a js.

292
00:16:53,470 --> 00:16:55,100
‫È molto divertente,

293
00:16:55,100 --> 00:16:58,363
‫quindi non aspettare di trasferirti lì subito.

