﻿1
00:00:01,040 --> 00:00:03,970
‫Narratore: Finora nella nostra implementazione dell'autenticazione

2
00:00:03,970 --> 00:00:07,780
‫abbiamo effettuato l'accesso degli utenti con una password corretta.

3
00:00:07,780 --> 00:00:11,170
‫Quindi, in pratica, abbiamo completato questo primo passaggio del

4
00:00:11,170 --> 00:00:13,170
‫flusso di lavoro di

5
00:00:13,170 --> 00:00:15,760
‫autenticazione in cui viene creato un

6
00:00:15,760 --> 00:00:18,730
‫token Web JSON e inviato al client se

7
00:00:18,730 --> 00:00:21,440
‫l'utente fornisce un'e-mail e una password corrette.

8
00:00:21,440 --> 00:00:25,350
‫Quindi in seguito implementeremo effettivamente percorsi protetti.

9
00:00:25,350 --> 00:00:28,630
‫Quindi, in pratica, utilizzando il token Web

10
00:00:28,630 --> 00:00:32,930
‫JSON creato per consentire agli utenti registrati l'accesso a percorsi protetti.

11
00:00:32,930 --> 00:00:36,220
‫E questo è il secondo passaggio dell'autenticazione.

12
00:00:36,220 --> 00:00:39,823
‫E quindi ora andiamo avanti e implementiamo questa funzionalità.

13
00:00:41,620 --> 00:00:43,880
‫Quindi diciamo che volevamo proteggere

14
00:00:43,880 --> 00:00:45,670
‫il percorso getAllTours.

15
00:00:45,670 --> 00:00:48,470
‫Quindi, in pratica, consenti solo agli utenti registrati

16
00:00:48,470 --> 00:00:51,560
‫di accedere a un elenco di tutti i nostri tour.

17
00:00:51,560 --> 00:00:53,830
‫E cosa significa che prima di eseguire il

18
00:00:53,830 --> 00:00:55,700
‫gestore di ottenere tutti i tour,

19
00:00:55,700 --> 00:00:57,353
‫diamo un'occhiata a questo.

20
00:00:58,340 --> 00:01:01,330
‫Ok, quindi prima di eseguire questo handle

21
00:01:01,330 --> 00:01:03,240
‫qui, dovremmo effettuare un controllo

22
00:01:03,240 --> 00:01:05,120
‫per verificare se

23
00:01:05,120 --> 00:01:07,760
‫l'utente è effettivamente connesso o meno, giusto?

24
00:01:07,760 --> 00:01:09,540
‫E quindi il modo

25
00:01:09,540 --> 00:01:11,640
‫migliore per farlo, come probabilmente già

26
00:01:11,640 --> 00:01:15,160
‫saprai a questo punto, è usare una funzione middleware, ok?

27
00:01:15,160 --> 00:01:17,300
‫Quindi in questo video, per

28
00:01:17,300 --> 00:01:19,640
‫proteggere le rotte, creeremo una funzione

29
00:01:19,640 --> 00:01:23,560
‫middleware che verrà eseguita prima di ciascuno di questi gestori, ok.

30
00:01:23,560 --> 00:01:26,320
‫Quindi una funzione che starà proprio qui,

31
00:01:26,320 --> 00:01:29,440
‫quindi prima che questa funzione qui possa essere eseguita.

32
00:01:29,440 --> 00:01:32,050
‫E questo middleware restituirà un errore se

33
00:01:32,050 --> 00:01:34,140
‫l'utente non è autenticato, quindi

34
00:01:34,140 --> 00:01:35,850
‫se non ha

35
00:01:35,850 --> 00:01:37,780
‫effettuato l'accesso, o chiamerà il

36
00:01:37,780 --> 00:01:42,150
‫prossimo middleware che è in questo caso il gestore getAllTours, giusto?

37
00:01:42,150 --> 00:01:44,730
‫E questo protegge efficacemente questo percorso

38
00:01:44,730 --> 00:01:47,080
‫da accessi non autorizzati.

39
00:01:47,080 --> 00:01:48,810
‫Quindi andiamo avanti e creiamo rapidamente

40
00:01:48,810 --> 00:01:50,290
‫quella funzione middleware e

41
00:01:50,290 --> 00:01:51,480
‫poi la mettiamo

42
00:01:51,480 --> 00:01:54,060
‫qui per illustrare ciò che ho appena detto.

43
00:01:54,060 --> 00:01:57,620
‫Ok, quindi anche qui nel nostro controller di

44
00:01:57,620 --> 00:02:00,170
‫autenticazione creeremo una nuova funzione middleware

45
00:02:03,920 --> 00:02:06,283
‫e si chiamerà protect.

46
00:02:08,510 --> 00:02:09,343
‫Va bene,

47
00:02:09,343 --> 00:02:11,600
‫e proprio come prima userò catchAsync

48
00:02:12,480 --> 00:02:14,740
‫perché ancora una volta tutte queste

49
00:02:14,740 --> 00:02:16,553
‫funzioni sono effettivamente funzioni asincrone.

50
00:02:17,990 --> 00:02:21,210
‫Va bene, e poi qui ovviamente, la nostra funzione

51
00:02:24,320 --> 00:02:27,270
‫middleware e per ora chiamiamo semplicemente next qui

52
00:02:27,270 --> 00:02:30,190
‫solo in modo che abbiamo effettivamente qualsiasi corpo

53
00:02:30,190 --> 00:02:32,240
‫qui in questa funzione

54
00:02:32,240 --> 00:02:35,090
‫middleware e poi torniamo ai nostri percorsi

55
00:02:35,090 --> 00:02:38,540
‫di tour e quindi proteggiamo questo percorso, ok ?

56
00:02:38,540 --> 00:02:42,190
‫Quindi, prima di tutto, devo effettivamente richiedere questo

57
00:02:42,190 --> 00:02:44,620
‫modulo del controller di autenticazione.

58
00:02:44,620 --> 00:02:45,453
‫Quindi

59
00:02:50,550 --> 00:02:52,350
‫const e poi require

60
00:02:56,410 --> 00:02:57,920
‫it's in controllers,

61
00:02:57,920 --> 00:02:59,713
‫e poi authController, okay.

62
00:03:01,430 --> 00:03:04,150
‫Quindi ora colleghiamolo,

63
00:03:04,150 --> 00:03:07,460
‫proprio qui nel percorso getAllTours.

64
00:03:07,460 --> 00:03:08,293
‫Va bene.

65
00:03:09,550 --> 00:03:13,913
‫Quindi authController. proteggere.

66
00:03:14,860 --> 00:03:15,693
‫Va bene.

67
00:03:15,693 --> 00:03:18,740
‫E quindi in questo momento questa funzione middleware verrà eseguita

68
00:03:18,740 --> 00:03:21,875
‫prima e poi ancora, se l'utente non è autenticato, si

69
00:03:21,875 --> 00:03:22,950
‫verificherà un errore.

70
00:03:22,950 --> 00:03:25,070
‫E ovviamente poi il middleware successivo,

71
00:03:25,070 --> 00:03:26,690
‫quindi quello che

72
00:03:26,690 --> 00:03:30,540
‫effettivamente riceve e invia tutti i tour non verrà eseguito.

73
00:03:30,540 --> 00:03:31,373
‫Va bene.

74
00:03:31,373 --> 00:03:34,700
‫E così ancora, questo proteggerà efficacemente l'accesso a

75
00:03:34,700 --> 00:03:38,223
‫questa risorsa qui da utenti che non hanno effettuato l'accesso.

76
00:03:39,250 --> 00:03:42,700
‫Va bene, allora torniamo qui.

77
00:03:42,700 --> 00:03:44,340
‫Non l'utente instrada,

78
00:03:44,340 --> 00:03:45,993
‫ma il controller di autenticazione.

79
00:03:46,850 --> 00:03:49,760
‫Bene, ora parliamo dell'implementazione di questo middleware

80
00:03:49,760 --> 00:03:51,180
‫di protezione.

81
00:03:51,180 --> 00:03:53,660
‫Cosa dovremo fare esattamente?

82
00:03:53,660 --> 00:03:56,583
‫Bene, iniziamo mettendo in fila un paio di passaggi qui.

83
00:03:57,460 --> 00:04:00,660
‫Va bene, e in realtà prima di tutto dobbiamo

84
00:04:00,660 --> 00:04:03,720
‫contrassegnare questa funzione come Async, altrimenti non avremmo davvero

85
00:04:03,720 --> 00:04:05,630
‫bisogno di catchAsync, giusto?

86
00:04:05,630 --> 00:04:09,260
‫E vedrai perché abbiamo bisogno che questa sia una funzione

87
00:04:09,260 --> 00:04:11,360
‫asincrona in un secondo, ok?

88
00:04:11,360 --> 00:04:13,760
‫Ma ora vediamo effettivamente i passaggi

89
00:04:13,760 --> 00:04:16,803
‫che dobbiamo compiere per implementare questo middleware di protezione.

90
00:04:18,460 --> 00:04:19,840
‫Quindi, proprio come

91
00:04:19,840 --> 00:04:21,990
‫prima, metterò questi passaggi qui come commenti.

92
00:04:23,340 --> 00:04:26,173
‫Prima di tutto dobbiamo ottenere effettivamente il token.

93
00:04:28,720 --> 00:04:29,553
‫E

94
00:04:30,660 --> 00:04:32,610
‫controlla se c'è fondamentalmente,

95
00:04:32,610 --> 00:04:34,303
‫quindi controlla se esiste.

96
00:04:35,400 --> 00:04:39,113
‫Quindi, dobbiamo convalidare il token.

97
00:04:41,860 --> 00:04:44,383
‫E quindi questo è fondamentalmente quel passaggio super

98
00:04:44,383 --> 00:04:48,900
‫importante di cui abbiamo parlato prima in cui l'algoritmo JWT verifica se la firma

99
00:04:48,900 --> 00:04:50,680
‫è valida o se non

100
00:04:50,680 --> 00:04:51,513
‫lo è.

101
00:04:51,513 --> 00:04:54,950
‫E quindi quindi se il token è valido o meno, ok?

102
00:04:54,950 --> 00:04:57,450
‫E quindi in realtà chiamiamo questo qui verifica.

103
00:04:58,930 --> 00:05:01,680
‫Penso che sia così che l'abbiamo chiamato in quella diapositiva in

104
00:05:01,680 --> 00:05:03,630
‫cui ne abbiamo parlato prima, va bene.

105
00:05:03,630 --> 00:05:06,040
‫E se non ricordi davvero come

106
00:05:06,040 --> 00:05:07,350
‫funzionava, beh, puoi

107
00:05:07,350 --> 00:05:10,003
‫sempre tornare indietro e rivedere quella lezione, ok?

108
00:05:11,470 --> 00:05:15,750
‫Quindi il prossimo passo, quindi se la verifica ha avuto successo,

109
00:05:15,750 --> 00:05:18,930
‫dobbiamo anche controllare se l'utente che sta tentando

110
00:05:18,930 --> 00:05:21,870
‫di accedere al percorso esiste ancora, ok?

111
00:05:21,870 --> 00:05:25,940
‫Quindi controlla se l'utente esiste ancora e parlerò di più

112
00:05:25,940 --> 00:05:28,090
‫del motivo per cui ciascuno

113
00:05:28,090 --> 00:05:32,610
‫di questi passaggi è necessario una volta che inizieremo a implementarli, ok?

114
00:05:32,610 --> 00:05:35,410
‫Quindi per ora questo potrebbe non avere molto senso

115
00:05:35,410 --> 00:05:38,950
‫per te, ma di nuovo parlerò di ogni fermata una volta arrivati lì.

116
00:05:38,950 --> 00:05:39,783
‫Va bene?

117
00:05:39,783 --> 00:05:41,440
‫E infine dobbiamo anche

118
00:05:42,980 --> 00:05:43,813
‫verificare

119
00:05:45,490 --> 00:05:47,000
‫se l'utente ha

120
00:05:50,090 --> 00:05:51,720
‫cambiato la password

121
00:05:53,060 --> 00:05:54,993
‫dopo l'emissione del JWT, ok?

122
00:05:56,690 --> 00:05:58,280
‫Bene, diciamo solo

123
00:05:58,280 --> 00:06:01,060
‫token qui, l'abbiamo chiamato token ovunque, ok?

124
00:06:01,060 --> 00:06:03,320
‫E quindi solo se non ci

125
00:06:03,320 --> 00:06:05,310
‫sono stati problemi in nessuno

126
00:06:05,310 --> 00:06:08,480
‫di questi passaggi qui, ovviamente, verrà chiamato il prossimo che

127
00:06:08,480 --> 00:06:11,210
‫avrà quindi accesso al percorso che abbiamo protetto.

128
00:06:11,210 --> 00:06:16,210
‫Quindi nel nostro esempio attuale, di nuovo, questo gestore getAllTours.

129
00:06:16,420 --> 00:06:17,610
‫Destra?

130
00:06:17,610 --> 00:06:19,260
‫Ok, ma torniamo indietro

131
00:06:19,260 --> 00:06:22,540
‫e iniziamo a implementare il nostro primo passo qui.

132
00:06:22,540 --> 00:06:24,380
‫Quindi, in pratica, ottenere il

133
00:06:24,380 --> 00:06:26,860
‫token e quindi verificare se esiste effettivamente.

134
00:06:26,860 --> 00:06:31,340
‫Quindi una pratica comune è inviare un token utilizzando un'intestazione http

135
00:06:31,340 --> 00:06:33,380
‫con la richiesta, ok?

136
00:06:33,380 --> 00:06:36,580
‫Quindi diamo un'occhiata a come possiamo impostare le intestazioni in

137
00:06:36,580 --> 00:06:38,427
‫Postman per inviarlo insieme alla

138
00:06:38,427 --> 00:06:40,420
‫richiesta e poi anche come possiamo ottenere

139
00:06:40,420 --> 00:06:42,410
‫l'accesso a queste intestazioni in Express.

140
00:06:42,410 --> 00:06:45,300
‫E facciamo prima quello.

141
00:06:45,300 --> 00:06:50,300
‫Quindi qui in apt. js Penso che qui abbiamo

142
00:06:51,240 --> 00:06:54,610
‫questo bel middleware, quindi qui accediamo effettivamente alla

143
00:06:56,290 --> 00:06:59,890
‫richiesta della console. headers, ok, abbiamo

144
00:06:59,890 --> 00:07:03,250
‫parlato prima degli header http, ed

145
00:07:03,250 --> 00:07:07,140
‫è così che possiamo accedervi in Express.

146
00:07:07,140 --> 00:07:10,350
‫Ok, quindi fondamentalmente alle intestazioni della richiesta, quindi

147
00:07:10,350 --> 00:07:13,753
‫quelle che un cliente può inviare insieme alla sua richiesta.

148
00:07:14,600 --> 00:07:17,890
‫Ok, e quindi qui a Postman, andiamo ora

149
00:07:19,060 --> 00:07:22,150
‫al percorso che stiamo cercando di proteggere.

150
00:07:22,150 --> 00:07:24,270
‫E poi qui imposta un'intestazione.

151
00:07:24,270 --> 00:07:25,670
‫E facciamone uno

152
00:07:29,100 --> 00:07:32,070
‫di prova e lo impostiamo su Jonas, ok?

153
00:07:32,070 --> 00:07:33,340
‫Ora manderò solo

154
00:07:35,140 --> 00:07:38,240
‫questo e qui in Express, diamo un'occhiata a questo.

155
00:07:38,240 --> 00:07:41,800
‫E così infatti qui otteniamo un oggetto con tutte le intestazioni

156
00:07:41,800 --> 00:07:43,900
‫che fanno parte della richiesta.

157
00:07:43,900 --> 00:07:45,700
‫Quindi tutto questo qui.

158
00:07:45,700 --> 00:07:48,380
‫E vedi che ci sono un sacco

159
00:07:48,380 --> 00:07:51,090
‫di intestazioni che Postman invia effettivamente automaticamente insieme

160
00:07:51,090 --> 00:07:54,740
‫alla richiesta, ad esempio, dice che lo user-agent è Postman,

161
00:07:54,740 --> 00:07:56,970
‫invia anche l'host, e alcune altre

162
00:07:56,970 --> 00:07:59,370
‫di cui parleremo più avanti come

163
00:07:59,370 --> 00:08:00,943
‫accettare per es.

164
00:08:01,800 --> 00:08:04,070
‫Ora ciò che conta qui è in realtà l'intestazione

165
00:08:04,070 --> 00:08:05,470
‫che ci siamo prefissati.

166
00:08:05,470 --> 00:08:08,730
‫Ok, quindi l'intestazione del test è impostata su jonas che abbiamo

167
00:08:08,730 --> 00:08:10,360
‫appena inviato nella nostra richiesta.

168
00:08:10,360 --> 00:08:14,240
‫Ora per inviare un token Web JSON come intestazione, in realtà

169
00:08:14,240 --> 00:08:16,470
‫esiste uno standard per farlo.

170
00:08:16,470 --> 00:08:21,080
‫Quindi torniamo qui, liberiamoci di tutto questo.

171
00:08:21,080 --> 00:08:24,760
‫E quindi lo standard per l'invio di un token è

172
00:08:24,760 --> 00:08:27,503
‫che dovremmo sempre usare un'intestazione chiamata autorizzazione.

173
00:08:30,430 --> 00:08:31,263
‫Va bene?

174
00:08:31,263 --> 00:08:32,940
‫Quindi proprio così e

175
00:08:32,940 --> 00:08:35,890
‫poi il valore di quell'intestazione dovrebbe sempre iniziare

176
00:08:35,890 --> 00:08:37,410
‫con Bearer, ok?

177
00:08:37,410 --> 00:08:42,300
‫Perché in fondo noi portiamo, abbiamo, possediamo questo token e poi

178
00:08:42,300 --> 00:08:44,680
‫ecco il valore del token.

179
00:08:44,680 --> 00:08:47,750
‫Quindi proprio come questa stringa casuale che abbiamo ottenuto prima.

180
00:08:47,750 --> 00:08:51,610
‫Quindi lasciamo che sia lei a questo come esempio, e

181
00:08:51,610 --> 00:08:53,323
‫quindi mandiamolo adesso.

182
00:08:55,180 --> 00:08:57,913
‫E poi, in effetti, dovremmo averlo qui.

183
00:08:59,050 --> 00:09:00,310
‫Va bene.

184
00:09:00,310 --> 00:09:03,620
‫Ora Express trasforma automaticamente tutti i nomi delle intestazioni

185
00:09:03,620 --> 00:09:06,160
‫in minuscolo, come puoi vedere qui,

186
00:09:06,160 --> 00:09:09,950
‫ma ovviamente il valore dell'intestazione qui è sempre lo stesso.

187
00:09:09,950 --> 00:09:13,550
‫Ok, quindi fondamentalmente questa parte del valore dell'intestazione è

188
00:09:13,550 --> 00:09:15,050
‫il nostro token.

189
00:09:15,050 --> 00:09:16,870
‫Ed è così che

190
00:09:16,870 --> 00:09:18,720
‫ora dovremmo leggere quel token dall'intestazione.

191
00:09:18,720 --> 00:09:19,553
‫Va bene?

192
00:09:20,550 --> 00:09:21,960
‫Quindi, se

193
00:09:21,960 --> 00:09:22,793
‫in

194
00:09:24,130 --> 00:09:29,130
‫realtà c'è req. intestazioni. autorizzazione, ok, e

195
00:09:32,730 --> 00:09:34,300
‫se inizia

196
00:09:34,300 --> 00:09:40,643
‫fondamentalmente con questa stringa portante qui va bene, quindi

197
00:09:42,720 --> 00:09:46,670
‫req. intestazioni. autorizzazione e ora

198
00:09:46,670 --> 00:09:48,240
‫questa è una stringa e

199
00:09:48,240 --> 00:09:50,050
‫quindi possiamo usare startWith su questo

200
00:09:52,210 --> 00:09:55,290
‫va bene, quindi questo è di nuovo solo normale JavaScript

201
00:09:57,910 --> 00:09:58,930
‫va bene.

202
00:09:58,930 --> 00:10:03,020
‫E quindi queste sono le condizioni in base alle quali vogliamo

203
00:10:03,020 --> 00:10:05,430
‫effettivamente salvare un token, ok?

204
00:10:05,430 --> 00:10:08,530
‫Quindi, di nuovo, nel caso in

205
00:10:08,530 --> 00:10:13,260
‫cui l'intestazione esista e il suo valore inizi con Bearer, ok.

206
00:10:13,260 --> 00:10:18,260
‫Allora in tal caso vogliamo dire che il token è uguale

207
00:10:18,460 --> 00:10:22,257
‫a req. intestazioni. autorizzazione e

208
00:10:23,890 --> 00:10:26,810
‫ora come otteniamo effettivamente questa seconda

209
00:10:26,810 --> 00:10:28,350
‫parte della stringa?

210
00:10:28,350 --> 00:10:30,820
‫Bene, fondamentalmente divideremo la stringa con questo

211
00:10:30,820 --> 00:10:33,050
‫carattere spazio, ok, il che creerà

212
00:10:33,050 --> 00:10:34,610
‫quindi un array con

213
00:10:34,610 --> 00:10:35,890
‫questo Bearer

214
00:10:35,890 --> 00:10:37,860
‫e con questo token e

215
00:10:37,860 --> 00:10:39,690
‫quindi prenderemo quella parte

216
00:10:39,690 --> 00:10:41,063
‫dell'array che vogliamo.

217
00:10:42,260 --> 00:10:45,080
‫Quindi dividi usando lo spazio,

218
00:10:45,080 --> 00:10:48,380
‫e poi da quell'array vogliamo il secondo elemento.

219
00:10:48,380 --> 00:10:49,490
‫Va bene?

220
00:10:49,490 --> 00:10:52,760
‫Ora non possiamo effettivamente definire una variabile all'interno di un

221
00:10:52,760 --> 00:10:53,800
‫blocco if

222
00:10:53,800 --> 00:10:55,440
‫perché const e let, quindi

223
00:10:55,440 --> 00:10:58,260
‫il nuovo dichiarativo di variabili ES6 è in realtà

224
00:10:58,260 --> 00:10:59,710
‫nell'ambito del blocco, e quindi

225
00:10:59,710 --> 00:11:02,650
‫qualunque cosa definiamo in questo blocco qui non sarà

226
00:11:02,650 --> 00:11:04,700
‫disponibile al di fuori di esso.

227
00:11:05,690 --> 00:11:08,643
‫Ok, quindi facciamolo davvero fuori.

228
00:11:11,970 --> 00:11:16,280
‫E quindi riassegna semplicemente questo valore al token.

229
00:11:16,280 --> 00:11:17,113
‫Va bene.

230
00:11:18,670 --> 00:11:21,880
‫E ora, registriamo il token sulla console solo

231
00:11:21,880 --> 00:11:23,863
‫per vedere se funziona.

232
00:11:25,130 --> 00:11:28,670
‫Ok, e in effetti otteniamo una specie di

233
00:11:28,670 --> 00:11:30,373
‫vero token qui.

234
00:11:31,240 --> 00:11:33,253
‫Quindi quello con cui abbiamo appena effettuato l'accesso.

235
00:11:35,990 --> 00:11:39,710
‫E poi metti quello qui, va bene.

236
00:11:39,710 --> 00:11:40,723
‫Quindi

237
00:11:42,360 --> 00:11:45,480
‫invialo, e ah!

238
00:11:45,480 --> 00:11:45,480
‫Eccoci qui.

239
00:11:45,480 --> 00:11:49,760
‫Quindi qui abbiamo i dati del token Web JSON che abbiamo appena inviato

240
00:11:49,760 --> 00:11:51,110
‫insieme alla richiesta.

241
00:11:51,110 --> 00:11:55,120
‫Spegniamo rapidamente questo registro della console qui.

242
00:11:55,120 --> 00:11:59,590
‫Va bene, e poco prima di andare avanti, controlliamo

243
00:11:59,590 --> 00:12:03,480
‫effettivamente se il token esiste effettivamente.

244
00:12:03,480 --> 00:12:04,313
‫Va bene.

245
00:12:05,810 --> 00:12:07,510
‫Quindi, se non c'è

246
00:12:10,360 --> 00:12:14,090
‫un token well, ovviamente vogliamo creare un nuovo errore.

247
00:12:14,090 --> 00:12:16,630
‫Giusto, e proprio come prima,

248
00:12:16,630 --> 00:12:19,030
‫torniamo da questo middleware e

249
00:12:19,030 --> 00:12:21,260
‫chiamiamo il prossimo, ok.

250
00:12:21,260 --> 00:12:24,560
‫E ora qui, creeremo un errore e quindi passeremo

251
00:12:24,560 --> 00:12:26,140
‫direttamente al nostro

252
00:12:26,140 --> 00:12:29,403
‫middleware di gestione degli errori globale con questo errore.

253
00:12:30,487 --> 00:12:33,860
‫Va bene, quindi se non è stato inviato alcun token con la

254
00:12:33,860 --> 00:12:35,913
‫richiesta, significa che non abbiamo effettuato l'accesso.

255
00:12:36,870 --> 00:12:40,310
‫Quindi inviamo all'utente che non sei

256
00:12:41,530 --> 00:12:42,373
‫loggato.

257
00:12:45,610 --> 00:12:48,793
‫Effettua il login per ottenere l'accesso.

258
00:12:50,137 --> 00:12:52,380
‫Va bene, e ora il

259
00:12:52,380 --> 00:12:55,090
‫codice di stato per questo tipo di

260
00:12:55,090 --> 00:12:58,040
‫situazione è 401 che significa non autorizzato, ok?

261
00:12:58,040 --> 00:13:00,430
‫Non sono sicuro di averlo usato

262
00:13:00,430 --> 00:13:03,380
‫prima e sì, in realtà l'abbiamo fatto anche qui.

263
00:13:03,380 --> 00:13:05,290
‫Ok, quindi questo significa

264
00:13:05,290 --> 00:13:08,890
‫sostanzialmente che i dati che sono stati inviati nella richiesta

265
00:13:08,890 --> 00:13:12,110
‫sono corretti, ma non sono sufficienti sostanzialmente per ottenere

266
00:13:12,110 --> 00:13:15,050
‫l'accesso dell'utente a una risorsa che sta richiedendo.

267
00:13:15,050 --> 00:13:16,080
‫Va bene.

268
00:13:16,080 --> 00:13:17,280
‫Salvalo qui

269
00:13:18,280 --> 00:13:20,270
‫e provalo di nuovo.

270
00:13:20,270 --> 00:13:24,660
‫Quindi, se fondamentalmente togliamo questa intestazione qui,

271
00:13:24,660 --> 00:13:28,090
‫allora dovremmo andare subito in quell'errore,

272
00:13:28,090 --> 00:13:29,120
‫giusto?

273
00:13:29,120 --> 00:13:31,910
‫E infatti, non sei loggato, per favore accedi

274
00:13:31,910 --> 00:13:33,340
‫per ottenere l'accesso.

275
00:13:33,340 --> 00:13:35,600
‫Con 401 non autorizzato.

276
00:13:35,600 --> 00:13:38,950
‫Grande! Quindi quella parte sta già funzionando.

277
00:13:38,950 --> 00:13:41,500
‫Va bene, e ora solo per ricapitolare, quindi

278
00:13:41,500 --> 00:13:44,590
‫in questo momento non stiamo inviando alcun token insieme

279
00:13:44,590 --> 00:13:45,903
‫alla richiesta, giusto?

280
00:13:47,330 --> 00:13:51,370
‫E quindi per questo motivo, ovviamente, non c'è nessun token, ok?

281
00:13:51,370 --> 00:13:53,380
‫E quindi creiamo questo errore,

282
00:13:53,380 --> 00:13:56,680
‫che attiverà quindi il nostro middleware del gestore degli

283
00:13:56,680 --> 00:13:59,260
‫errori per inviare quell'errore al client, ok?

284
00:13:59,260 --> 00:14:02,690
‫E poi ovviamente non abbiamo accesso a tutti

285
00:14:02,690 --> 00:14:05,600
‫i tour, perché ovviamente questo

286
00:14:05,600 --> 00:14:08,710
‫middleware viene eseguito prima del controller getAllTours.

287
00:14:08,710 --> 00:14:13,070
‫E quindi in questo momento, questo è davvero protetto, ok?

288
00:14:13,070 --> 00:14:17,170
‫Quindi funziona già abbastanza bene a questo punto.

289
00:14:17,170 --> 00:14:19,870
‫Ma ovviamente, questo è tutt'altro che sufficiente,

290
00:14:19,870 --> 00:14:23,480
‫perché non è sufficiente inviare semplicemente un token con una richiesta.

291
00:14:23,480 --> 00:14:26,290
‫Deve anche essere un token valido.

292
00:14:26,290 --> 00:14:28,410
‫Quindi fondamentalmente un token in cui nessuno

293
00:14:28,410 --> 00:14:30,270
‫ha provato a cambiare il payload.

294
00:14:30,270 --> 00:14:34,110
‫Ok, e il payload, ricorda, nel nostro caso è

295
00:14:34,110 --> 00:14:39,110
‫sempre lo user_id dell'utente per il quale è stato emesso il token.

296
00:14:39,210 --> 00:14:41,380
‫Va bene, quindi

297
00:14:41,380 --> 00:14:44,200
‫dobbiamo implementare questo passaggio di verifica.

298
00:14:44,200 --> 00:14:47,160
‫Ma questa lezione è già abbastanza lunga e ci

299
00:14:47,160 --> 00:14:49,520
‫sono ancora molte cose da fare

300
00:14:49,520 --> 00:14:52,403
‫qui, quindi lasciamo stare questo per il prossimo video.

