﻿1
00:00:01,160 --> 00:00:03,130
‫-: Quindi, in precedenza,

2
00:00:03,130 --> 00:00:05,420
‫abbiamo già implementato una semplice funzionalità

3
00:00:05,420 --> 00:00:06,490
‫di registrazione,

4
00:00:06,490 --> 00:00:08,760
‫ma in questa lezione registreremo anche

5
00:00:08,760 --> 00:00:11,700
‫l'utente in un processo di registrazione più reale.

6
00:00:11,700 --> 00:00:13,830
‫Quindi, a partire da questa

7
00:00:13,830 --> 00:00:16,760
‫lezione, inizieremo davvero a implementare la nostra

8
00:00:16,760 --> 00:00:19,683
‫autenticazione, e quindi questo diventa davvero serio.

9
00:00:21,230 --> 00:00:23,210
‫E quindi, prima di iniziare,

10
00:00:23,210 --> 00:00:25,150
‫voglio darti un avvertimento qui,

11
00:00:25,150 --> 00:00:28,740
‫quindi l'autenticazione è molto difficile da ottenere e molti

12
00:00:28,740 --> 00:00:31,330
‫tutorial là fuori che troverai quando

13
00:00:31,330 --> 00:00:32,970
‫cercherai l'autenticazione con

14
00:00:32,970 --> 00:00:35,492
‫come Node. js ed

15
00:00:35,492 --> 00:00:38,480
‫Express, molti di questi commettono molti errori gravi

16
00:00:38,480 --> 00:00:42,220
‫e semplificano eccessivamente le cose che non dovrebbero essere semplificate.

17
00:00:42,220 --> 00:00:45,270
‫Va bene, questo non vuol dire che tutti

18
00:00:45,270 --> 00:00:46,740
‫i tutorial

19
00:00:46,740 --> 00:00:48,500
‫là fuori siano cattivi,

20
00:00:48,500 --> 00:00:52,400
‫va bene, o che siano inutili o qualcosa del genere, ma

21
00:00:52,400 --> 00:00:54,670
‫passo davvero settimane a ricercare tutte

22
00:00:54,670 --> 00:00:56,410
‫le migliori pratiche e

23
00:00:56,410 --> 00:00:59,550
‫a perfezionare e migliorare il mio codice, per rendere

24
00:00:59,550 --> 00:01:02,000
‫questa sezione di autenticazione che noi comincerò

25
00:01:02,000 --> 00:01:05,228
‫a implementare ora nel miglior modo possibile, per un

26
00:01:05,228 --> 00:01:08,950
‫principiante come te, va bene, e questo perché dobbiamo essere

27
00:01:08,950 --> 00:01:12,730
‫davvero molto attenti quando scriviamo questa parte dell'applicazione, perché ricorda, i

28
00:01:12,730 --> 00:01:15,650
‫dati dei nostri utenti sono in gioco qui

29
00:01:15,650 --> 00:01:17,200
‫è in gioco anche

30
00:01:17,200 --> 00:01:19,080
‫la fiducia nell'azienda che gestisce

31
00:01:19,080 --> 00:01:21,200
‫l'applicazione, quindi implementare l'autenticazione è una

32
00:01:21,200 --> 00:01:24,360
‫vera responsabilità in cui non si dovrebbero commettere errori.

33
00:01:24,360 --> 00:01:25,980
‫Ora ci sono alcune

34
00:01:25,980 --> 00:01:28,470
‫biblioteche là fuori che possono aiutarci a

35
00:01:28,470 --> 00:01:31,360
‫implementare l'autenticazione e l'autorizzazione e la più nota

36
00:01:31,360 --> 00:01:33,130
‫si chiama Passport, ma anche

37
00:01:33,130 --> 00:01:34,740
‫una biblioteca del

38
00:01:34,740 --> 00:01:37,470
‫genere non ti toglie tutto il lavoro e

39
00:01:37,470 --> 00:01:39,510
‫tutte le responsabilità, va bene.

40
00:01:39,510 --> 00:01:40,630
‫Ora, in

41
00:01:40,630 --> 00:01:42,810
‫questo caso, implementeremo l'intera

42
00:01:42,810 --> 00:01:46,380
‫logica di protezione e autorizzazione dell'accesso da soli, tranne

43
00:01:46,380 --> 00:01:49,910
‫ovviamente per l'implementazione del token web Jason di

44
00:01:49,910 --> 00:01:52,310
‫cui abbiamo parlato nell'ultimo video stesso.

45
00:01:52,310 --> 00:01:54,820
‫Ok, quindi tutte le firme e le

46
00:01:54,820 --> 00:01:58,170
‫verifiche, tutta quella roba, la lasceremo alla biblioteca WJT

47
00:01:58,170 --> 00:02:00,450
‫ma poi il resto, lo

48
00:02:00,450 --> 00:02:02,920
‫implementeremo noi stessi nelle prossime due lezioni.

49
00:02:02,920 --> 00:02:04,430
‫Ora, come ho detto

50
00:02:04,430 --> 00:02:07,830
‫prima, abbiamo già la nostra funzione di registrazione qui, giusto, ma

51
00:02:07,830 --> 00:02:09,240
‫in questo momento,

52
00:02:09,240 --> 00:02:11,500
‫tutto ciò che fa è semplicemente creare

53
00:02:11,500 --> 00:02:14,010
‫un nuovo utente e quindi inviarlo al client.

54
00:02:14,010 --> 00:02:17,410
‫Ora, poco dopo aver finito di registrare questo corso,

55
00:02:17,410 --> 00:02:18,640
‫ho notato

56
00:02:18,640 --> 00:02:21,239
‫che c'è una falla di sicurezza

57
00:02:21,239 --> 00:02:23,920
‫molto seria in questo modo di

58
00:02:23,920 --> 00:02:26,630
‫iscrivere gli utenti, quindi fondamentalmente il problema

59
00:02:26,630 --> 00:02:30,640
‫è che in questo momento creiamo un nuovo utente usando

60
00:02:30,640 --> 00:02:32,850
‫tutti i dati che arrivano

61
00:02:32,850 --> 00:02:36,350
‫con il corpo giusto, e quindi il problema qui

62
00:02:36,350 --> 00:02:40,960
‫è che in questo modo, chiunque può specificare il ruolo come diritto

63
00:02:40,960 --> 00:02:45,360
‫di amministratore, quindi in pratica, tutti ora possono semplicemente registrarsi come

64
00:02:45,360 --> 00:02:46,670
‫amministratore nella nostra

65
00:02:46,670 --> 00:02:49,620
‫applicazione, e quindi ovviamente non è necessario.

66
00:02:49,620 --> 00:02:53,090
‫Quindi, ancora una volta, questo è un grave difetto

67
00:02:53,090 --> 00:02:55,860
‫di sicurezza e ovviamente dovremo risolverlo e

68
00:02:55,860 --> 00:02:58,420
‫risolverlo è in realtà abbastanza semplice.

69
00:02:58,420 --> 00:03:01,150
‫Quindi quello che ti serve invece di questa riga

70
00:03:01,150 --> 00:03:02,670
‫di codice, che è selezionata

71
00:03:02,670 --> 00:03:06,370
‫qui è questo pezzo di codice che ho appena messo qui sullo schermo.

72
00:03:06,370 --> 00:03:07,460
‫Va bene.

73
00:03:07,460 --> 00:03:10,900
‫Quindi, di nuovo, per favore vai avanti ed elimina questa riga di

74
00:03:10,900 --> 00:03:12,720
‫codice che è attualmente selezionata qui

75
00:03:12,720 --> 00:03:15,320
‫e sostituiscila con il codice che ho appena inserito

76
00:03:15,320 --> 00:03:16,690
‫qui sullo schermo.

77
00:03:16,690 --> 00:03:19,070
‫Ora qual è in realtà la grande

78
00:03:19,070 --> 00:03:21,010
‫differenza qui, beh, con

79
00:03:21,010 --> 00:03:24,580
‫questo nuovo codice, in pratica permettiamo solo ai dati di cui

80
00:03:24,580 --> 00:03:26,550
‫abbiamo effettivamente bisogno di essere inseriti

81
00:03:26,550 --> 00:03:30,370
‫nel nuovo utente, quindi solo un nome, l'e-mail e poi le password.

82
00:03:30,370 --> 00:03:34,370
‫E così ora, anche se un utente prova a inserire manualmente un

83
00:03:34,370 --> 00:03:37,030
‫ruolo, non lo memorizzeremo nel nuovo utente e

84
00:03:37,030 --> 00:03:38,750
‫lo stesso per altre

85
00:03:38,750 --> 00:03:41,170
‫cose, come ad esempio una foto.

86
00:03:41,170 --> 00:03:45,120
‫Quindi questa è la soluzione rapida e semplice per quel problema.

87
00:03:45,120 --> 00:03:45,983
‫Ora

88
00:03:45,983 --> 00:03:49,890
‫quello che farà è che non possiamo più registrarci come amministratore,

89
00:03:49,890 --> 00:03:52,570
‫e quindi se abbiamo bisogno di aggiungere

90
00:03:52,570 --> 00:03:53,680
‫un nuovo amministratore

91
00:03:53,680 --> 00:03:57,030
‫al nostro sistema, possiamo semplicemente creare un nuovo utente

92
00:03:57,030 --> 00:03:59,610
‫normalmente e poi andare in MongoDB

93
00:03:59,610 --> 00:04:02,440
‫Compass, e fondamentalmente modifica quel ruolo lì dentro.

94
00:04:02,440 --> 00:04:03,930
‫Quindi modificalo

95
00:04:03,930 --> 00:04:06,470
‫manualmente da utente ad amministratore, ok.

96
00:04:06,470 --> 00:04:09,070
‫Ovviamente potremmo anche definire un percorso speciale

97
00:04:09,070 --> 00:04:10,910
‫per la semplice creazione

98
00:04:10,910 --> 00:04:13,610
‫di amministratori, ma sarebbe un po' troppo.

99
00:04:13,610 --> 00:04:16,210
‫Ok, ora andiamo avanti.

100
00:04:16,210 --> 00:04:18,820
‫Nota solo che il codice nel resto del

101
00:04:18,820 --> 00:04:20,790
‫video e tutti i video

102
00:04:20,790 --> 00:04:25,090
‫in questo corso sarà ovviamente ancora questa vecchia versione sbagliata, va bene, ma

103
00:04:25,090 --> 00:04:27,270
‫in realtà nel codice finale che

104
00:04:27,270 --> 00:04:29,240
‫è nel repository GitHub, l'ho

105
00:04:29,240 --> 00:04:32,773
‫già corretto e abbiamo avere il codice corretto lì dentro.

106
00:04:33,610 --> 00:04:37,770
‫Ad ogni modo, di solito quando ci iscriviamo a qualsiasi applicazione

107
00:04:37,770 --> 00:04:41,060
‫web, allora anche tu accedi automaticamente, giusto, e

108
00:04:41,060 --> 00:04:43,500
‫quindi implementiamolo molto rapidamente qui.

109
00:04:43,500 --> 00:04:45,350
‫Quindi accedi al nuovo utente,

110
00:04:45,350 --> 00:04:48,120
‫non appena si è registrato, ok, e

111
00:04:48,120 --> 00:04:50,090
‫ricorda dalla lezione precedente, come

112
00:04:50,090 --> 00:04:51,680
‫funziona, beh, tutto ciò

113
00:04:51,680 --> 00:04:53,440
‫che dobbiamo fare è

114
00:04:53,440 --> 00:04:55,350
‫firmare un token web Jason

115
00:04:55,350 --> 00:04:58,490
‫e poi rispedirlo all'utente , ok, ma prima di

116
00:04:58,490 --> 00:05:01,270
‫tutto installiamo il pacchetto MPM che useremo per

117
00:05:01,270 --> 00:05:03,350
‫tutto ciò che riguarda i token

118
00:05:03,350 --> 00:05:04,893
‫web di Jason.

119
00:05:06,160 --> 00:05:08,180
‫Quindi nel nostro altro terminale,

120
00:05:08,180 --> 00:05:12,660
‫diciamo installazione MPM, token web Jason, quindi tutto questo insieme come

121
00:05:12,660 --> 00:05:14,370
‫questo e quello dovrebbe

122
00:05:16,240 --> 00:05:18,630
‫quindi installare questo pacchetto e andiamo

123
00:05:18,630 --> 00:05:19,790
‫avanti e

124
00:05:19,790 --> 00:05:22,211
‫diamo un'occhiata a GitHub, solo per

125
00:05:22,211 --> 00:05:23,950
‫vedere la documentazione e diamo

126
00:05:28,000 --> 00:05:29,380
‫fallo qui, almeno

127
00:05:29,380 --> 00:05:31,830
‫per ora non abbiamo più bisogno

128
00:05:33,370 --> 00:05:38,370
‫di questo qui, quindi questo ci porterà alla pagina su MPM, e così

129
00:05:38,810 --> 00:05:40,300
‫vedrai quanto è popolare

130
00:05:40,300 --> 00:05:42,170
‫questo pacchetto in realtà, quindi

131
00:05:42,170 --> 00:05:45,100
‫ne abbiamo 2. 3 milioni di

132
00:05:45,100 --> 00:05:47,930
‫download settimanali, quindi è davvero una tonnellata di

133
00:05:47,930 --> 00:05:50,730
‫download e possiamo dare un'occhiata anche alla

134
00:05:50,730 --> 00:05:53,540
‫documentazione qui, ma personalmente preferisco farlo su GitHub.

135
00:05:53,540 --> 00:05:56,090
‫Penso che sembri molto più pulito qui,

136
00:05:56,090 --> 00:05:58,240
‫e ci sono così abituato

137
00:05:58,240 --> 00:06:02,410
‫a questo punto, quindi di solito lo vedo solo qui, ok.

138
00:06:02,410 --> 00:06:04,690
‫Ad ogni modo, la prima funzione che

139
00:06:04,690 --> 00:06:08,070
‫useremo con JWT qui è sign, okay, quindi per creare

140
00:06:08,070 --> 00:06:11,320
‫sostanzialmente un nuovo token, e per questo ovviamente abbiamo

141
00:06:11,320 --> 00:06:13,330
‫bisogno del payload, abbiamo bisogno

142
00:06:13,330 --> 00:06:16,080
‫della chiave in modo che il segreto privato

143
00:06:16,080 --> 00:06:17,280
‫che ho

144
00:06:17,280 --> 00:06:19,750
‫menzionato prima è memorizzato solo sul nostro

145
00:06:19,750 --> 00:06:21,607
‫server e che dobbiamo firmare

146
00:06:21,607 --> 00:06:23,830
‫il token e poi possiamo passare

147
00:06:23,830 --> 00:06:26,040
‫alcune opzioni e faremo tutto in

148
00:06:26,040 --> 00:06:29,270
‫un secondo, voglio solo mostrare l'altra funzione che abbiamo

149
00:06:29,270 --> 00:06:32,040
‫qui e che davvero abbiamo un sacco di

150
00:06:32,040 --> 00:06:34,149
‫opzioni qui, per esempio la scadenza

151
00:06:34,149 --> 00:06:36,353
‫in, che useremo anche per usare,

152
00:06:38,070 --> 00:06:39,830
‫quindi tutte queste cose

153
00:06:39,830 --> 00:06:41,600
‫e poi abbiamo la verifica.

154
00:06:41,600 --> 00:06:44,200
‫Quindi abbiamo anche parlato del processo di verifica

155
00:06:44,200 --> 00:06:47,700
‫e questo è fondamentalmente implementato in questa funzione, ok, quindi

156
00:06:47,700 --> 00:06:49,490
‫questo è quello che useremo,

157
00:06:49,490 --> 00:06:52,740
‫quando accedi a un utente, ok, e questo è davvero

158
00:06:52,740 --> 00:06:54,610
‫tutto quello che c'è, quindi

159
00:06:54,610 --> 00:06:56,858
‫hai tutto queste diverse opzioni qui,

160
00:06:56,858 --> 00:06:58,400
‫ok, hai anche la

161
00:06:58,400 --> 00:07:01,140
‫decodifica ma quella non è molto importante, ok,

162
00:07:01,140 --> 00:07:03,990
‫quindi vedi che questo pacchetto include davvero solo

163
00:07:03,990 --> 00:07:04,980
‫le due

164
00:07:04,980 --> 00:07:07,870
‫funzionalità di cui abbiamo discusso nel video precedente.

165
00:07:07,870 --> 00:07:11,683
‫Quindi firma e poi verifica, ok.

166
00:07:12,590 --> 00:07:15,060
‫Quindi torniamo qui e iniziamo

167
00:07:15,060 --> 00:07:18,193
‫effettivamente a utilizzare il pacchetto token web Jason.

168
00:07:19,830 --> 00:07:21,363
‫Quindi importiamolo qui,

169
00:07:24,380 --> 00:07:26,800
‫e di solito si chiama semplicemente

170
00:07:31,040 --> 00:07:33,920
‫JWT e richiede il token web Jason.

171
00:07:33,920 --> 00:07:37,053
‫Ok, quindi creiamo il nostro token qui, ok,

172
00:07:39,290 --> 00:07:40,460
‫e mi piacerebbe

173
00:07:40,460 --> 00:07:43,710
‫chiamarlo semplicemente in questo modo, quindi solo token, ok,

174
00:07:43,710 --> 00:07:48,080
‫quindi segno di punto JWT, e ora la prima cosa è il

175
00:07:48,080 --> 00:07:50,460
‫carico utile, e questo è fondamentalmente

176
00:07:50,460 --> 00:07:52,650
‫un oggetto per tutti i

177
00:07:52,650 --> 00:07:55,260
‫dati che memorizzeremo all'interno del token, e

178
00:07:55,260 --> 00:07:56,093
‫in

179
00:07:56,093 --> 00:07:59,410
‫questo caso, vogliamo davvero solo l'ID dell'utente, va bene,

180
00:07:59,410 --> 00:08:02,210
‫quindi niente di pazzo qui, non molti dati

181
00:08:02,210 --> 00:08:04,150
‫che non sono davvero importanti.

182
00:08:04,150 --> 00:08:06,890
‫Quindi diciamo che l'ID è e poi

183
00:08:06,890 --> 00:08:09,550
‫otteniamo semplicemente l'ID dal nuovo utente

184
00:08:09,550 --> 00:08:12,830
‫che è stato appena creato, ok, quindi il

185
00:08:12,830 --> 00:08:17,530
‫nuovo utente punti e poi ricorda che in MonogoDB, l'ID è effettivamente

186
00:08:17,530 --> 00:08:21,460
‫chiamato ID di sottolineatura, va bene, e così è l'oggetto

187
00:08:21,460 --> 00:08:23,760
‫che sono i dati,

188
00:08:23,760 --> 00:08:27,083
‫il payload, che vogliamo inserire nel nostro JWT.

189
00:08:27,920 --> 00:08:30,820
‫Successivamente, abbiamo bisogno del segreto, ok, quindi fondamentalmente

190
00:08:30,820 --> 00:08:32,090
‫una stringa per

191
00:08:33,580 --> 00:08:35,350
‫un segreto, d'accordo, ovviamente

192
00:08:35,350 --> 00:08:38,530
‫questo è terribile, d'accordo, questo è solo una specie

193
00:08:38,530 --> 00:08:40,340
‫di segnaposto perché in realtà,

194
00:08:40,340 --> 00:08:42,770
‫il nostro file di configurazione è un

195
00:08:42,770 --> 00:08:46,720
‫posto perfetto per memorizzare questo tipo di dati segreti, quindi proprio

196
00:08:46,720 --> 00:08:49,460
‫come la password per esempio, e quindi

197
00:08:49,460 --> 00:08:53,633
‫andiamo ad aggiungere e modificare qui, okay, quindi chiamiamolo JWT, segreto, e

198
00:08:55,720 --> 00:09:00,070
‫ovviamente il nome che diamo qui, non ha molta importanza ma quello

199
00:09:00,070 --> 00:09:02,220
‫che importa è il segreto che

200
00:09:02,220 --> 00:09:03,430
‫specifichiamo

201
00:09:03,430 --> 00:09:06,920
‫qui, va bene, perché usando la crittografia standard HSA 256

202
00:09:06,920 --> 00:09:11,920
‫per la firma, il segreto dovrebbe essere lungo almeno trentadue caratteri, va bene, ma

203
00:09:11,940 --> 00:09:15,320
‫più lungo è meglio è effettivamente ed è qui

204
00:09:15,320 --> 00:09:17,880
‫che molti i tutorial là fuori falliscono,

205
00:09:17,880 --> 00:09:19,847
‫alcuni di loro mettono semplicemente

206
00:09:19,847 --> 00:09:22,240
‫una stringa molto corta qui, ma

207
00:09:22,240 --> 00:09:25,280
‫non è di nuovo l'ideale, quindi per la

208
00:09:25,280 --> 00:09:27,010
‫migliore crittografia della firma,

209
00:09:27,010 --> 00:09:29,290
‫di nuovo dovresti usare almeno trentadue

210
00:09:29,290 --> 00:09:32,940
‫caratteri, quindi creerò il mio segreto qui ora ma dovresti

211
00:09:32,940 --> 00:09:34,584
‫davvero usarne un altro,

212
00:09:34,584 --> 00:09:37,763
‫ok, per favore non usare il sa me uno

213
00:09:37,763 --> 00:09:40,490
‫come sto facendo perché potrebbe diventare un

214
00:09:40,490 --> 00:09:42,590
‫problema di sicurezza per la tua

215
00:09:42,590 --> 00:09:44,180
‫applicazione, ok, usa sempre

216
00:09:44,180 --> 00:09:47,460
‫un segreto univoco per le tue applicazioni e mai

217
00:09:47,460 --> 00:09:49,400
‫lo stesso, va bene, e

218
00:09:49,400 --> 00:09:52,100
‫soprattutto non quello di qualcun altro, quindi

219
00:09:52,100 --> 00:09:54,883
‫sicuramente non quello che io sto scrivendo ora.

220
00:09:56,750 --> 00:09:57,820
‫Quindi questo può

221
00:09:57,820 --> 00:10:00,160
‫essere qualsiasi cosa, non devono essere caratteri

222
00:10:00,160 --> 00:10:02,390
‫o cose strane, preferisco usare una frase

223
00:10:02,390 --> 00:10:04,443
‫come questa, il mio segreto ultra

224
00:10:07,860 --> 00:10:10,903
‫sicuro e ultra lungo, quindi quello che è successo

225
00:10:11,990 --> 00:10:13,363
‫qui, comunque dovrebbe essere

226
00:10:14,690 --> 00:10:17,670
‫lungo trentadue caratteri e quindi questo è quello che

227
00:10:17,670 --> 00:10:18,730
‫useremo

228
00:10:18,730 --> 00:10:21,400
‫per i miei token web Jason, ma di

229
00:10:21,400 --> 00:10:24,193
‫nuovo, per favore, usane un altro, va bene.

230
00:10:25,489 --> 00:10:29,290
‫Ad ogni modo, torniamo al controller di autenticazione qui e

231
00:10:29,290 --> 00:10:30,733
‫ora usiamolo effettivamente.

232
00:10:31,810 --> 00:10:34,970
‫Quindi ricorda che una variabile di

233
00:10:34,970 --> 00:10:39,913
‫ambiente è un segreto JWT di processo punto fine punto,

234
00:10:41,100 --> 00:10:42,100
‫ok.

235
00:10:42,100 --> 00:10:44,490
‫Quindi, a questo punto, abbiamo il carico

236
00:10:44,490 --> 00:10:46,320
‫utile e abbiamo il segreto.

237
00:10:46,320 --> 00:10:49,400
‫L'intestazione del token verrà effettivamente creata automaticamente, ma

238
00:10:49,400 --> 00:10:50,670
‫ora ciò

239
00:10:50,670 --> 00:10:52,390
‫che possiamo anche fare è

240
00:10:52,390 --> 00:10:54,470
‫trasmettere alcune opzioni e l'opzione

241
00:10:54,470 --> 00:10:57,390
‫che passerò è quando il JWT dovrebbe scadere.

242
00:10:57,390 --> 00:10:59,600
‫Quindi questo significa che dopo il

243
00:10:59,600 --> 00:11:01,240
‫tempo che passeremo qui,

244
00:11:01,240 --> 00:11:03,110
‫il token web Jason non

245
00:11:03,110 --> 00:11:04,240
‫sarà più

246
00:11:04,240 --> 00:11:06,890
‫valido, anche se altrimenti sarebbe verificato correttamente,

247
00:11:06,890 --> 00:11:08,060
‫va bene, quindi

248
00:11:08,060 --> 00:11:10,570
‫questo è fondamentalmente per disconnettere un utente

249
00:11:10,570 --> 00:11:12,670
‫dopo un un certo periodo di

250
00:11:12,670 --> 00:11:15,320
‫tempo semplicemente come misura di sicurezza, ok.

251
00:11:15,320 --> 00:11:19,500
‫Quindi definiamo effettivamente quel tempo di scadenza anche come

252
00:11:19,500 --> 00:11:21,493
‫variabile di configurazione qui,

253
00:11:23,320 --> 00:11:28,320
‫quindi JWT scade in e quindi qui, ovviamente, puoi usare

254
00:11:28,360 --> 00:11:30,536
‫lo stesso tempo che

255
00:11:30,536 --> 00:11:31,950
‫sto mettendo.

256
00:11:31,950 --> 00:11:33,630
‫Quindi possiamo usare una

257
00:11:33,630 --> 00:11:36,170
‫stringa speciale come ad esempio 90D e

258
00:11:36,170 --> 00:11:38,807
‫l'algoritmo di firma capirà automaticamente che questo

259
00:11:38,807 --> 00:11:42,350
‫significa novanta giorni, ok, potresti anche usare dieci ore o

260
00:11:42,350 --> 00:11:47,350
‫cinque minuti o tre secondi o qualcosa del genere, o semplicemente un numero

261
00:11:47,360 --> 00:11:49,720
‫qualsiasi , che verranno quindi trattati

262
00:11:49,720 --> 00:11:50,800
‫come millisecondi

263
00:11:50,800 --> 00:11:53,330
‫ma penso che sia meglio usare semplicemente

264
00:11:53,330 --> 00:11:55,820
‫novanta o qualcosa del genere D,

265
00:11:55,820 --> 00:11:59,350
‫quindi in questo caso novanta giorni, va bene, e

266
00:11:59,350 --> 00:12:01,120
‫così di nuovo, dopo

267
00:12:01,120 --> 00:12:03,860
‫novanta giorni, il JWT non sarà più

268
00:12:03,860 --> 00:12:07,770
‫valido, anche se la firma è corretta e tutto è valido.

269
00:12:07,770 --> 00:12:11,503
‫Ok, di nuovo come una misura di sicurezza aggiuntiva,

270
00:12:12,880 --> 00:12:13,713
‫ok,

271
00:12:13,713 --> 00:12:17,180
‫quindi queste opzioni, come sempre, le abbiamo passate

272
00:12:17,180 --> 00:12:19,820
‫come oggetto e poi specifichiamo la

273
00:12:19,820 --> 00:12:24,640
‫scadenza tra, quindi scade tra e poi il processo punto fine

274
00:12:26,120 --> 00:12:31,120
‫e poi JWT scade tra, ok, e questo qui aggiungerà quindi alcuni

275
00:12:32,050 --> 00:12:34,190
‫dati aggiuntivi al payload, ma

276
00:12:34,190 --> 00:12:35,530
‫ovviamente non

277
00:12:35,530 --> 00:12:37,480
‫è affatto un problema.

278
00:12:38,410 --> 00:12:40,220
‫Quindi abbiamo appena creato un token,

279
00:12:40,220 --> 00:12:41,500
‫ora tutto ciò

280
00:12:41,500 --> 00:12:43,463
‫che dobbiamo fare è inviarlo al client.

281
00:12:44,910 --> 00:12:48,240
‫Quindi mettiamolo qui prima dell'utente in realtà

282
00:12:48,240 --> 00:12:50,420
‫e poi è così.

283
00:12:50,420 --> 00:12:53,350
‫Questo è davvero tutto ciò che dobbiamo fare

284
00:12:53,350 --> 00:12:54,840
‫per accedere a un

285
00:12:54,840 --> 00:12:56,250
‫nuovo utente, perché

286
00:12:56,250 --> 00:12:59,530
‫in questo momento non stiamo controllando se una password

287
00:12:59,530 --> 00:13:00,970
‫è corretta o se

288
00:13:00,970 --> 00:13:02,890
‫l'utente esiste effettivamente nel database

289
00:13:02,890 --> 00:13:03,840
‫perché

290
00:13:03,840 --> 00:13:05,880
‫qui in questo caso, l'utente

291
00:13:05,880 --> 00:13:08,070
‫è stato davvero appena creato e

292
00:13:08,070 --> 00:13:10,010
‫quindi subito, abbiamo registrato l'utente

293
00:13:10,010 --> 00:13:12,780
‫nell'applicazione inviando un token, ok, e l'uso del

294
00:13:12,780 --> 00:13:15,430
‫client dovrebbe quindi in qualche modo memorizzare

295
00:13:15,430 --> 00:13:16,760
‫quel token, proprio

296
00:13:16,760 --> 00:13:21,370
‫come abbiamo detto prima nella lezione precedente, ok, quindi diamo un salvataggio qui,

297
00:13:21,370 --> 00:13:24,160
‫e proviamolo davvero, ok, quindi diamo il mio

298
00:13:24,160 --> 00:13:27,040
‫vecchio indirizzo qui, hello@jonas. io, inviamolo, e aspettiamo

299
00:13:27,040 --> 00:13:29,210
‫e in effetti, ecco il nostro

300
00:13:29,210 --> 00:13:32,910
‫token web Jason quindi congratulazioni, hai appena creato il tuo

301
00:13:32,910 --> 00:13:35,050
‫primissimo token web Jason che dovrebbe

302
00:13:35,050 --> 00:13:37,490
‫assomigliare un po' a questo, e ovviamente

303
00:13:37,490 --> 00:13:39,760
‫non sarà esattamente il lo stesso,

304
00:13:39,760 --> 00:13:42,310
‫perché anche il nostro segreto non è

305
00:13:42,310 --> 00:13:45,360
‫lo stesso, giusto, e ora quello che voglio

306
00:13:45,360 --> 00:13:46,770
‫mostrarti è il

307
00:13:46,770 --> 00:13:48,810
‫debugger JWT, che ti ho

308
00:13:48,810 --> 00:13:50,730
‫mostrato come screenshot in precedenza

309
00:13:50,730 --> 00:13:52,010
‫nell'ultimo video.

310
00:13:52,010 --> 00:13:54,140
‫Quindi andiamo avanti e copiamo

311
00:13:56,050 --> 00:14:00,453
‫questo token e poi andiamo a JWT. io, ok, allora quaggiù

312
00:14:02,850 --> 00:14:03,683
‫abbiamo

313
00:14:04,540 --> 00:14:06,790
‫il debugger e quindi

314
00:14:06,790 --> 00:14:10,683
‫eliminiamo questo qui, e mettiamo il nostro e

315
00:14:12,170 --> 00:14:14,830
‫subito vedi che la nostra

316
00:14:14,830 --> 00:14:17,580
‫firma non è valida, ma è

317
00:14:17,580 --> 00:14:20,570
‫perché la funzione sign modifica queste

318
00:14:20,570 --> 00:14:22,090
‫due proprietà qui,

319
00:14:22,090 --> 00:14:25,140
‫perché abbiamo specificato una scadenza data sostanzialmente.

320
00:14:25,140 --> 00:14:27,600
‫Quindi questo qui è emesso alle,

321
00:14:27,600 --> 00:14:30,223
‫e questa è l'ora di scadenza, ok,

322
00:14:31,450 --> 00:14:35,050
‫quindi se rimuoviamo questi due da qui, vedrai che

323
00:14:35,050 --> 00:14:36,350
‫ora,

324
00:14:36,350 --> 00:14:38,620
‫questa firma è effettivamente verificata,

325
00:14:38,620 --> 00:14:42,260
‫ok quindi ciò che è importante notare qui, è che

326
00:14:42,260 --> 00:14:44,815
‫ovviamente l'intestazione è visibile okay è

327
00:14:44,815 --> 00:14:47,840
‫fondamentalmente facilmente decodificabile, e quindi tu che non

328
00:14:47,840 --> 00:14:50,820
‫abbiamo specificato nulla di tutto questo, è stato

329
00:14:50,820 --> 00:14:54,530
‫il pacchetto token web Jason che lo ha fatto per

330
00:14:54,530 --> 00:14:58,560
‫noi, ma che qui è in realtà il payload che abbiamo

331
00:14:58,560 --> 00:15:00,800
‫specificato, quindi se diamo un'occhiata

332
00:15:00,800 --> 00:15:03,860
‫a questo ID, dovrebbe essere esattamente lo stesso

333
00:15:03,860 --> 00:15:06,343
‫che abbiamo in postino, quindi finisce

334
00:15:07,960 --> 00:15:11,493
‫con sei OF, e quindi in effetti, è esattamente

335
00:15:13,600 --> 00:15:16,260
‫lo stesso giusto, ok, quindi questi due

336
00:15:16,260 --> 00:15:19,920
‫qui sono aperti e quindi la firma ovviamente, non possiamo

337
00:15:19,920 --> 00:15:22,930
‫vedo davvero, perché ovviamente il nostro segreto è

338
00:15:22,930 --> 00:15:26,270
‫proprio questo, è davvero segreto, d'accordo, quindi questo era

339
00:15:26,270 --> 00:15:29,600
‫solo per mostrarti che tutto funziona, e chiudiamo questo,

340
00:15:29,600 --> 00:15:31,242
‫e sì, non siamo

341
00:15:31,242 --> 00:15:35,550
‫in grado di accedere agli utenti, ma solo se l'utente si

342
00:15:35,550 --> 00:15:38,050
‫è appena registrato, perché in quel

343
00:15:38,050 --> 00:15:40,980
‫caso non abbiamo bisogno di verificare l'e-mail

344
00:15:40,980 --> 00:15:42,290
‫nel database, e

345
00:15:42,290 --> 00:15:44,490
‫nemmeno il parola d'ordine, ok.

346
00:15:44,490 --> 00:15:47,400
‫Quindi fare tutto questo è un processo molto più

347
00:15:47,400 --> 00:15:49,340
‫complesso, ed è quello che

348
00:15:49,340 --> 00:15:50,940
‫faremo nella prossima lezione,

349
00:15:50,940 --> 00:15:53,660
‫quindi in seguito, effettueremo l'accesso degli utenti, in

350
00:15:53,660 --> 00:15:56,543
‫base al loro indirizzo email e alla loro password.

