﻿1
00:00:01,040 --> 00:00:03,970
‫Narrateur : Jusqu'à présent, dans notre implémentation de

2
00:00:03,970 --> 00:00:07,780
‫l'authentification, nous avons connecté les utilisateurs avec un mot de passe correct.

3
00:00:07,780 --> 00:00:11,170
‫Donc, fondamentalement, nous avons terminé cette première étape du

4
00:00:11,170 --> 00:00:13,170
‫flux de travail d'authentification

5
00:00:13,170 --> 00:00:15,760
‫où un jeton Web JSON est créé

6
00:00:15,760 --> 00:00:18,730
‫et renvoyé au client si l'utilisateur fournit une

7
00:00:18,730 --> 00:00:21,440
‫adresse e-mail et un mot de passe corrects.

8
00:00:21,440 --> 00:00:25,350
‫Ensuite, nous allons implémenter des routes protégées.

9
00:00:25,350 --> 00:00:28,630
‫Donc, en gros, en utilisant le jeton Web

10
00:00:28,630 --> 00:00:32,930
‫JSON créé afin de donner aux utilisateurs connectés l'accès aux routes protégées.

11
00:00:32,930 --> 00:00:36,220
‫Et c'est la deuxième étape de l'authentification.

12
00:00:36,220 --> 00:00:39,823
‫Et maintenant, allons de l'avant et implémentons cette fonctionnalité.

13
00:00:41,620 --> 00:00:43,880
‫Disons donc que nous voulions protéger

14
00:00:43,880 --> 00:00:45,670
‫la route getAllTours.

15
00:00:45,670 --> 00:00:48,470
‫Donc, fondamentalement, autoriser uniquement les utilisateurs connectés

16
00:00:48,470 --> 00:00:51,560
‫à accéder à une liste de toutes nos visites.

17
00:00:51,560 --> 00:00:53,830
‫Et ce que cela signifie, c'est qu'avant d'exécuter

18
00:00:53,830 --> 00:00:55,700
‫le gestionnaire get all tours, jetons

19
00:00:55,700 --> 00:00:57,353
‫un coup d'œil à cela.

20
00:00:58,340 --> 00:01:01,330
‫D'accord, donc avant d'exécuter ce descripteur ici, nous aurions

21
00:01:01,330 --> 00:01:03,240
‫besoin d'avoir une vérification en place

22
00:01:03,240 --> 00:01:05,120
‫afin de vérifier si l'utilisateur

23
00:01:05,120 --> 00:01:07,760
‫est réellement connecté ou non, n'est-ce pas ?

24
00:01:07,760 --> 00:01:09,540
‫Et donc la meilleure façon

25
00:01:09,540 --> 00:01:11,640
‫de le faire, comme vous le savez

26
00:01:11,640 --> 00:01:15,160
‫probablement déjà à ce stade, est d'utiliser une fonction middleware, d'accord ?

27
00:01:15,160 --> 00:01:17,300
‫Donc, dans cette vidéo, afin

28
00:01:17,300 --> 00:01:19,640
‫de protéger les routes, nous allons créer

29
00:01:19,640 --> 00:01:23,560
‫une fonction middleware qui s'exécutera avant chacun de ces gestionnaires, d'accord.

30
00:01:23,560 --> 00:01:26,320
‫Donc une fonction qui va s'asseoir ici,

31
00:01:26,320 --> 00:01:29,440
‫donc avant que cette fonction ici puisse s'exécuter.

32
00:01:29,440 --> 00:01:32,050
‫Et ce middleware renverra alors soit une

33
00:01:32,050 --> 00:01:34,140
‫erreur si l'utilisateur n'est pas authentifié,

34
00:01:34,140 --> 00:01:35,850
‫donc s'il n'est pas

35
00:01:35,850 --> 00:01:37,780
‫connecté, soit il appellera le

36
00:01:37,780 --> 00:01:42,150
‫middleware suivant qui est dans ce cas le gestionnaire getAllTours, non ?

37
00:01:42,150 --> 00:01:44,730
‫Et cela protège efficacement cette route

38
00:01:44,730 --> 00:01:47,080
‫contre les accès non autorisés.

39
00:01:47,080 --> 00:01:48,810
‫Alors allons-y et créons rapidement

40
00:01:48,810 --> 00:01:50,290
‫cette fonction middleware, puis

41
00:01:50,290 --> 00:01:51,480
‫mettons-la ici

42
00:01:51,480 --> 00:01:54,060
‫afin d'illustrer ce que je viens de dire.

43
00:01:54,060 --> 00:01:57,620
‫D'accord, donc ici, dans notre contrôleur d'authentification, nous allons

44
00:01:57,620 --> 00:02:00,170
‫à nouveau créer une nouvelle fonction

45
00:02:03,920 --> 00:02:06,283
‫middleware et elle s'appelle protéger.

46
00:02:08,510 --> 00:02:09,343
‫Très bien,

47
00:02:09,343 --> 00:02:11,600
‫et comme avant, je vais utiliser catchAsync

48
00:02:12,480 --> 00:02:14,740
‫car une fois de plus, toutes ces fonctions

49
00:02:14,740 --> 00:02:16,553
‫sont en fait des fonctions asynchrone.

50
00:02:17,990 --> 00:02:21,210
‫Très bien, et puis ici bien sûr, notre fonction

51
00:02:24,320 --> 00:02:27,270
‫middleware et pour l'instant, appelons très simplement next

52
00:02:27,270 --> 00:02:30,190
‫here juste pour que nous ayons en fait

53
00:02:30,190 --> 00:02:32,240
‫n'importe quel corps ici dans

54
00:02:32,240 --> 00:02:35,090
‫cette fonction middleware, puis revenons à nos

55
00:02:35,090 --> 00:02:38,540
‫itinéraires de tournée et protégeons ensuite cet itinéraire, d'accord ?

56
00:02:38,540 --> 00:02:42,190
‫Donc, tout d'abord, je dois réellement exiger ce

57
00:02:42,190 --> 00:02:44,620
‫module de contrôleur d'authentification.

58
00:02:44,620 --> 00:02:45,453
‫Donc

59
00:02:50,550 --> 00:02:52,350
‫const et ensuite exiger que

60
00:02:56,410 --> 00:02:57,920
‫ce soit dans les

61
00:02:57,920 --> 00:02:59,713
‫contrôleurs, puis authController, d'accord.

62
00:03:01,430 --> 00:03:04,150
‫Alors maintenant, connectons-le,

63
00:03:04,150 --> 00:03:07,460
‫ici même dans l'itinéraire getAllTours.

64
00:03:07,460 --> 00:03:08,293
‫D'accord.

65
00:03:09,550 --> 00:03:13,913
‫Donc authController. protéger.

66
00:03:14,860 --> 00:03:15,693
‫D'accord.

67
00:03:15,693 --> 00:03:18,740
‫Et donc maintenant, cette fonction middleware va s'exécuter en

68
00:03:18,740 --> 00:03:21,875
‫premier et encore, si l'utilisateur n'est pas authentifié, il y

69
00:03:21,875 --> 00:03:22,950
‫aura une erreur.

70
00:03:22,950 --> 00:03:25,070
‫Et bien sûr, le middleware suivant,

71
00:03:25,070 --> 00:03:26,690
‫donc celui qui

72
00:03:26,690 --> 00:03:30,540
‫reçoit et envoie toutes les tournées ne sera alors pas exécuté.

73
00:03:30,540 --> 00:03:31,373
‫D'accord.

74
00:03:31,373 --> 00:03:34,700
‫Et encore une fois, cela protégera efficacement l'accès à

75
00:03:34,700 --> 00:03:38,223
‫cette ressource ici des utilisateurs qui ne sont pas connectés.

76
00:03:39,250 --> 00:03:42,700
‫Très bien, alors revenons ici.

77
00:03:42,700 --> 00:03:44,340
‫Pas les routes

78
00:03:44,340 --> 00:03:45,993
‫utilisateur, mais le contrôleur d'authentification.

79
00:03:46,850 --> 00:03:49,760
‫Très bien, et maintenant à propos de la mise en œuvre

80
00:03:49,760 --> 00:03:51,180
‫de ce middleware de protection.

81
00:03:51,180 --> 00:03:53,660
‫Que devrons-nous faire exactement ?

82
00:03:53,660 --> 00:03:56,583
‫Eh bien, commençons par souligner quelques étapes ici.

83
00:03:57,460 --> 00:04:00,660
‫D'accord, et en fait, nous devons tout d'abord marquer cette

84
00:04:00,660 --> 00:04:03,720
‫fonction comme Async, sinon nous n'aurions pas vraiment besoin

85
00:04:03,720 --> 00:04:05,630
‫de catchAsync, n'est-ce pas ?

86
00:04:05,630 --> 00:04:09,260
‫Et vous verrez pourquoi nous avons besoin que ce soit une fonction

87
00:04:09,260 --> 00:04:11,360
‫Async dans une seconde, d'accord ?

88
00:04:11,360 --> 00:04:13,760
‫Mais maintenant, exposons en fait les étapes

89
00:04:13,760 --> 00:04:16,803
‫que nous devons suivre pour implémenter ce middleware de protection.

90
00:04:18,460 --> 00:04:19,840
‫Donc, comme avant, je vais

91
00:04:19,840 --> 00:04:21,990
‫mettre ces étapes ici sous forme de commentaires.

92
00:04:23,340 --> 00:04:26,173
‫Tout d'abord, nous devons obtenir le jeton.

93
00:04:28,720 --> 00:04:29,553
‫Et

94
00:04:30,660 --> 00:04:32,610
‫vérifiez s'il est là en

95
00:04:32,610 --> 00:04:34,303
‫gros, donc vérifiez s'il existe.

96
00:04:35,400 --> 00:04:39,113
‫Ensuite, nous devons valider le jeton.

97
00:04:41,860 --> 00:04:44,383
‫Et donc c'est fondamentalement cette étape super

98
00:04:44,383 --> 00:04:48,900
‫importante dont nous avons parlé précédemment où l'algorithme JWT vérifie si la signature est

99
00:04:48,900 --> 00:04:50,680
‫valide ou si elle ne

100
00:04:50,680 --> 00:04:51,513
‫l'est pas.

101
00:04:51,513 --> 00:04:54,950
‫Et donc donc si le token est valide ou non, d'accord ?

102
00:04:54,950 --> 00:04:57,450
‫Et en fait, appelons cela ici vérification.

103
00:04:58,930 --> 00:05:01,680
‫Je pense que c'est comme ça que nous l'avons appelé dans cette

104
00:05:01,680 --> 00:05:03,630
‫diapositive où nous en avons déjà parlé, d'accord.

105
00:05:03,630 --> 00:05:06,040
‫Et si vous ne vous souvenez pas vraiment comment cela

106
00:05:06,040 --> 00:05:07,350
‫a fonctionné, vous pouvez

107
00:05:07,350 --> 00:05:10,003
‫toujours revenir en arrière et revoir cette conférence, d'accord ?

108
00:05:11,470 --> 00:05:15,750
‫Ensuite, si la vérification a réussi, nous devons également vérifier

109
00:05:15,750 --> 00:05:18,930
‫si l'utilisateur qui essaie d'accéder à la

110
00:05:18,930 --> 00:05:21,870
‫route existe toujours, d'accord ?

111
00:05:21,870 --> 00:05:25,940
‫Vérifiez donc si l'utilisateur existe toujours, et je vous expliquerai pourquoi

112
00:05:25,940 --> 00:05:28,090
‫chacune de ces étapes est

113
00:05:28,090 --> 00:05:32,610
‫nécessaire une fois que nous avons commencé à les implémenter, d'accord ?

114
00:05:32,610 --> 00:05:35,410
‫Donc, pour l'instant, cela n'a peut-être pas beaucoup de sens pour

115
00:05:35,410 --> 00:05:38,950
‫vous, mais encore une fois, je parlerai de chaque arrêt une fois que nous y serons.

116
00:05:38,950 --> 00:05:39,783
‫D'accord?

117
00:05:39,783 --> 00:05:41,440
‫Et enfin, nous devons également

118
00:05:42,980 --> 00:05:43,813
‫vérifier

119
00:05:45,490 --> 00:05:47,000
‫si l'utilisateur a changé

120
00:05:50,090 --> 00:05:51,720
‫de mot de passe

121
00:05:53,060 --> 00:05:54,993
‫après l'émission du JWT, d'accord ?

122
00:05:56,690 --> 00:05:58,280
‫Eh bien, disons simplement jeton

123
00:05:58,280 --> 00:06:01,060
‫ici, nous l'avons appelé jeton partout ailleurs, d'accord ?

124
00:06:01,060 --> 00:06:03,320
‫Et donc seulement s'il n'y a eu aucun

125
00:06:03,320 --> 00:06:05,310
‫problème dans aucune de ces étapes

126
00:06:05,310 --> 00:06:08,480
‫ici, alors bien sûr, la prochaine sera appelée, ce qui aura

127
00:06:08,480 --> 00:06:11,210
‫alors accès à la route que nous avons protégée.

128
00:06:11,210 --> 00:06:16,210
‫Donc, dans notre exemple actuel, encore une fois, ce gestionnaire getAllTours.

129
00:06:16,420 --> 00:06:17,610
‫Droit?

130
00:06:17,610 --> 00:06:19,260
‫D'accord, mais revenons en arrière

131
00:06:19,260 --> 00:06:22,540
‫et commençons à mettre en œuvre notre toute première étape ici.

132
00:06:22,540 --> 00:06:24,380
‫Donc, en gros, obtenez

133
00:06:24,380 --> 00:06:26,860
‫le jeton, puis vérifiez s'il existe réellement.

134
00:06:26,860 --> 00:06:31,340
‫Une pratique courante consiste donc à envoyer un jeton à l'aide d'un en-tête http

135
00:06:31,340 --> 00:06:33,380
‫avec la requête, d'accord ?

136
00:06:33,380 --> 00:06:36,580
‫Voyons donc comment nous pouvons définir des en-têtes dans

137
00:06:36,580 --> 00:06:38,427
‫Postman pour l'envoyer avec

138
00:06:38,427 --> 00:06:40,420
‫la demande, puis comment nous pouvons

139
00:06:40,420 --> 00:06:42,410
‫accéder à ces en-têtes dans Express.

140
00:06:42,410 --> 00:06:45,300
‫Et commençons par celui-là en fait.

141
00:06:45,300 --> 00:06:50,300
‫Alors ici dans apt. js Je pense que nous avons ce

142
00:06:51,240 --> 00:06:54,610
‫middleware sympa ici, et donc ici, connectons-nous en fait à

143
00:06:56,290 --> 00:06:59,890
‫la demande de la console. en-têtes, d'accord, nous

144
00:06:59,890 --> 00:07:03,250
‫avons donc déjà parlé des en-têtes http, et

145
00:07:03,250 --> 00:07:07,140
‫c'est ainsi que nous pouvons y accéder dans Express.

146
00:07:07,140 --> 00:07:10,350
‫D'accord, donc essentiellement aux en-têtes de demande, donc

147
00:07:10,350 --> 00:07:13,753
‫à ceux qu'un client peut envoyer avec sa demande.

148
00:07:14,600 --> 00:07:17,890
‫D'accord, et donc ici dans Postman, passons maintenant à

149
00:07:19,060 --> 00:07:22,150
‫la route que nous essayons de protéger.

150
00:07:22,150 --> 00:07:24,270
‫Et puis ici, définissez un en-tête.

151
00:07:24,270 --> 00:07:25,670
‫Et faisons un

152
00:07:29,100 --> 00:07:32,070
‫test et définissons-le sur Jonas, d'accord ?

153
00:07:32,070 --> 00:07:33,340
‫Maintenant, je vais juste

154
00:07:35,140 --> 00:07:38,240
‫envoyer ceci et ici dans Express, jetons un coup d'œil à cela.

155
00:07:38,240 --> 00:07:41,800
‫Et donc en effet ici, nous obtenons un objet avec tous les

156
00:07:41,800 --> 00:07:43,900
‫en-têtes qui font partie de la requête.

157
00:07:43,900 --> 00:07:45,700
‫Alors tout ça ici.

158
00:07:45,700 --> 00:07:48,380
‫Et vous voyez qu'il y a un

159
00:07:48,380 --> 00:07:51,090
‫tas d'en-têtes que Postman envoie en fait automatiquement

160
00:07:51,090 --> 00:07:54,740
‫avec la demande, par exemple, il dit que l'agent utilisateur est

161
00:07:54,740 --> 00:07:56,970
‫Postman, il envoie également l'hôte, et

162
00:07:56,970 --> 00:07:59,370
‫d'autres dont nous parlerons plus tard comme

163
00:07:59,370 --> 00:08:00,943
‫accepter par exemple.

164
00:08:01,800 --> 00:08:04,070
‫Maintenant, ce qui compte ici, c'est en fait l'en-tête

165
00:08:04,070 --> 00:08:05,470
‫que nous avons nous-mêmes défini.

166
00:08:05,470 --> 00:08:08,730
‫D'accord, donc l'en-tête de test est défini sur jonas que nous

167
00:08:08,730 --> 00:08:10,360
‫venons d'envoyer dans notre demande.

168
00:08:10,360 --> 00:08:14,240
‫Maintenant, pour envoyer un jeton Web JSON en tant qu'en-tête, il existe en

169
00:08:14,240 --> 00:08:16,470
‫fait une norme pour le faire.

170
00:08:16,470 --> 00:08:21,080
‫Alors revenons ici, débarrassons-nous de tout cela.

171
00:08:21,080 --> 00:08:24,760
‫Et donc cette norme pour l'envoi d'un jeton est que nous

172
00:08:24,760 --> 00:08:27,503
‫devrions toujours utiliser un en-tête appelé autorisation.

173
00:08:30,430 --> 00:08:31,263
‫D'accord?

174
00:08:31,263 --> 00:08:32,940
‫Donc, juste comme ça, puis

175
00:08:32,940 --> 00:08:35,890
‫la valeur de cet en-tête doit toujours commencer par

176
00:08:35,890 --> 00:08:37,410
‫Bearer, d'accord ?

177
00:08:37,410 --> 00:08:42,300
‫Car au fond on porte, on a, on possède ce jeton et puis

178
00:08:42,300 --> 00:08:44,680
‫ici la valeur du jeton.

179
00:08:44,680 --> 00:08:47,750
‫Donc, tout comme cette chaîne aléatoire que nous avons obtenue auparavant.

180
00:08:47,750 --> 00:08:51,610
‫Laissons-la donc à ceci comme exemple, et

181
00:08:51,610 --> 00:08:53,323
‫envoyons-la maintenant.

182
00:08:55,180 --> 00:08:57,913
‫Et puis en effet, nous devrions l'obtenir ici.

183
00:08:59,050 --> 00:09:00,310
‫D'accord.

184
00:09:00,310 --> 00:09:03,620
‫Maintenant, Express transforme automatiquement tous les noms d'en-tête en minuscules,

185
00:09:03,620 --> 00:09:06,160
‫comme vous pouvez le voir ici,

186
00:09:06,160 --> 00:09:09,950
‫mais bien sûr, notre valeur d'en-tête ici est toujours la même.

187
00:09:09,950 --> 00:09:13,550
‫D'accord, et donc fondamentalement, cette partie de la valeur d'en-tête

188
00:09:13,550 --> 00:09:15,050
‫est notre jeton.

189
00:09:15,050 --> 00:09:16,870
‫Et c'est ainsi que nous devrions

190
00:09:16,870 --> 00:09:18,720
‫maintenant lire ce jeton à partir de l'en-tête.

191
00:09:18,720 --> 00:09:19,553
‫D'accord?

192
00:09:20,550 --> 00:09:21,960
‫Donc, s'il

193
00:09:21,960 --> 00:09:22,793
‫y

194
00:09:24,130 --> 00:09:29,130
‫a réellement req. en-têtes. autorisation, d'accord, et

195
00:09:32,730 --> 00:09:34,300
‫si cela

196
00:09:34,300 --> 00:09:40,643
‫commence essentiellement par cette chaîne de support ici, d'accord, alors

197
00:09:42,720 --> 00:09:46,670
‫req. en-têtes. autorisation et maintenant

198
00:09:46,670 --> 00:09:48,240
‫il s'agit d'une chaîne et

199
00:09:48,240 --> 00:09:50,050
‫nous pouvons donc utiliser startWith sur

200
00:09:52,210 --> 00:09:55,290
‫cela d'accord, donc c'est juste du JavaScript normal à

201
00:09:57,910 --> 00:09:58,930
‫nouveau d'accord.

202
00:09:58,930 --> 00:10:03,020
‫Et donc ce sont les conditions dans lesquelles nous voulons réellement

203
00:10:03,020 --> 00:10:05,430
‫enregistrer un jeton, d'accord ?

204
00:10:05,430 --> 00:10:08,530
‫Donc, encore une fois, au cas où

205
00:10:08,530 --> 00:10:13,260
‫cet en-tête existe et que sa valeur commence par Bearer, d'accord.

206
00:10:13,260 --> 00:10:18,260
‫Ensuite, dans ce cas, nous voulons dire que le jeton est égal

207
00:10:18,460 --> 00:10:22,257
‫à req. en-têtes. autorisation et

208
00:10:23,890 --> 00:10:26,810
‫maintenant comment obtenons-nous réellement cette deuxième partie

209
00:10:26,810 --> 00:10:28,350
‫de la chaîne?

210
00:10:28,350 --> 00:10:30,820
‫Eh bien, nous allons essentiellement diviser la chaîne

211
00:10:30,820 --> 00:10:33,050
‫par ce caractère d'espace, d'accord, ce qui

212
00:10:33,050 --> 00:10:34,610
‫créera ensuite un tableau avec

213
00:10:34,610 --> 00:10:35,890
‫ce porteur

214
00:10:35,890 --> 00:10:37,860
‫et avec ce jeton, puis nous

215
00:10:37,860 --> 00:10:39,690
‫allons prendre cette partie du

216
00:10:39,690 --> 00:10:41,063
‫tableau que nous voulons.

217
00:10:42,260 --> 00:10:45,080
‫Alors divisez en utilisant l'espace, puis à

218
00:10:45,080 --> 00:10:48,380
‫partir de ce tableau, nous voulons le deuxième élément.

219
00:10:48,380 --> 00:10:49,490
‫D'accord?

220
00:10:49,490 --> 00:10:52,760
‫Maintenant, nous ne pouvons pas réellement définir une variable à l'intérieur d'un

221
00:10:52,760 --> 00:10:53,800
‫bloc if

222
00:10:53,800 --> 00:10:55,440
‫parce que const et let, donc

223
00:10:55,440 --> 00:10:58,260
‫la nouvelle déclaration de variable ES6 est en fait à

224
00:10:58,260 --> 00:10:59,710
‫portée de bloc, et donc

225
00:10:59,710 --> 00:11:02,650
‫tout ce que nous définissons dans ce bloc ici ne sera

226
00:11:02,650 --> 00:11:04,700
‫alors pas disponible en dehors de celui-ci.

227
00:11:05,690 --> 00:11:08,643
‫D'accord, et faisons ça à l'extérieur.

228
00:11:11,970 --> 00:11:16,280
‫Et puis réaffectez simplement cette valeur au jeton.

229
00:11:16,280 --> 00:11:17,113
‫D'accord.

230
00:11:18,670 --> 00:11:21,880
‫Et maintenant, enregistrons le jeton sur la console juste

231
00:11:21,880 --> 00:11:23,863
‫pour voir si cela fonctionne.

232
00:11:25,130 --> 00:11:28,670
‫D'accord, et en fait, obtenons en quelque sorte un

233
00:11:28,670 --> 00:11:30,373
‫vrai jeton ici.

234
00:11:31,240 --> 00:11:33,253
‫Donc celui avec lequel nous venons de nous connecter.

235
00:11:35,990 --> 00:11:39,710
‫Et puis mettez celui-là ici, d'accord.

236
00:11:39,710 --> 00:11:40,723
‫Alors

237
00:11:42,360 --> 00:11:45,480
‫envoyez-le, et ah!

238
00:11:45,480 --> 00:11:45,480
‫Nous y voilà.

239
00:11:45,480 --> 00:11:49,760
‫Nous avons donc ici nos données de jeton Web JSON que nous venons

240
00:11:49,760 --> 00:11:51,110
‫d'envoyer avec la demande.

241
00:11:51,110 --> 00:11:55,120
‫Désactivons rapidement ce journal de console ici.

242
00:11:55,120 --> 00:11:59,590
‫Très bien, et juste avant de continuer,

243
00:11:59,590 --> 00:12:03,480
‫vérifions si le jeton existe réellement.

244
00:12:03,480 --> 00:12:04,313
‫D'accord.

245
00:12:05,810 --> 00:12:07,510
‫Donc, s'il n'y a pas

246
00:12:10,360 --> 00:12:14,090
‫de puits de jeton, alors, bien sûr, nous voulons créer une nouvelle erreur.

247
00:12:14,090 --> 00:12:16,630
‫D'accord, et comme avant de

248
00:12:16,630 --> 00:12:19,030
‫revenir de ce middleware et

249
00:12:19,030 --> 00:12:21,260
‫d'appeler le suivant, d'accord.

250
00:12:21,260 --> 00:12:24,560
‫Et maintenant, ici, nous allons ensuite créer une erreur et nous

251
00:12:24,560 --> 00:12:26,140
‫passerons donc directement à

252
00:12:26,140 --> 00:12:29,403
‫notre middleware global de gestion des erreurs avec cette erreur.

253
00:12:30,487 --> 00:12:33,860
‫D'accord, donc si aucun jeton n'est envoyé avec la demande, cela signifie

254
00:12:33,860 --> 00:12:35,913
‫que nous ne sommes pas connectés.

255
00:12:36,870 --> 00:12:40,310
‫Envoyons donc à l'utilisateur auquel vous n'êtes pas

256
00:12:41,530 --> 00:12:42,373
‫connecté.

257
00:12:45,610 --> 00:12:48,793
‫Veuillez vous connecter pour y accéder.

258
00:12:50,137 --> 00:12:52,380
‫Très bien, et maintenant le

259
00:12:52,380 --> 00:12:55,090
‫code d'état pour ce genre de situation est

260
00:12:55,090 --> 00:12:58,040
‫401, ce qui signifie non autorisé, d'accord ?

261
00:12:58,040 --> 00:13:00,430
‫Je ne sais pas si nous l'avons déjà

262
00:13:00,430 --> 00:13:03,380
‫utilisé et oui, en fait, nous l'avons fait ici aussi.

263
00:13:03,380 --> 00:13:05,290
‫D'accord, et cela signifie essentiellement

264
00:13:05,290 --> 00:13:08,890
‫que les données qui ont été envoyées dans la demande

265
00:13:08,890 --> 00:13:12,110
‫sont correctes, mais elles ne sont pas suffisantes pour

266
00:13:12,110 --> 00:13:15,050
‫que l'utilisateur accède à une ressource qu'il demande.

267
00:13:15,050 --> 00:13:16,080
‫D'accord.

268
00:13:16,080 --> 00:13:17,280
‫Sauvegardez-le ici

269
00:13:18,280 --> 00:13:20,270
‫et testez-le à nouveau.

270
00:13:20,270 --> 00:13:24,660
‫Donc, si nous supprimons essentiellement cet en-tête ici, nous

271
00:13:24,660 --> 00:13:28,090
‫devrions immédiatement entrer dans cette erreur, n'est-ce

272
00:13:28,090 --> 00:13:29,120
‫pas ?

273
00:13:29,120 --> 00:13:31,910
‫Et en effet, vous n'êtes pas connecté, veuillez vous

274
00:13:31,910 --> 00:13:33,340
‫connecter pour avoir accès.

275
00:13:33,340 --> 00:13:35,600
‫Avec 401 non autorisé.

276
00:13:35,600 --> 00:13:38,950
‫Super! Cette partie fonctionne donc déjà.

277
00:13:38,950 --> 00:13:41,500
‫Très bien, et maintenant juste pour récapituler, donc

278
00:13:41,500 --> 00:13:44,590
‫pour le moment nous n'envoyons aucun jeton avec la demande,

279
00:13:44,590 --> 00:13:45,903
‫n'est-ce pas ?

280
00:13:47,330 --> 00:13:51,370
‫Et donc pour cette raison, bien sûr, il n'y a pas de jeton, d'accord ?

281
00:13:51,370 --> 00:13:53,380
‫Et par conséquent, nous créons

282
00:13:53,380 --> 00:13:56,680
‫cette erreur, qui déclenchera ensuite notre middleware de gestion d'erreurs

283
00:13:56,680 --> 00:13:59,260
‫pour renvoyer cette erreur au client, d'accord ?

284
00:13:59,260 --> 00:14:02,690
‫Et puis bien sûr nous n'avons pas accès

285
00:14:02,690 --> 00:14:05,600
‫à toutes les visites, car bien

286
00:14:05,600 --> 00:14:08,710
‫sûr ce middleware s'exécute avant le contrôleur getAllTours.

287
00:14:08,710 --> 00:14:13,070
‫Et donc maintenant, c'est vraiment protégé, d'accord ?

288
00:14:13,070 --> 00:14:17,170
‫Cela fonctionne donc déjà très bien à ce stade.

289
00:14:17,170 --> 00:14:19,870
‫Mais bien sûr, c'est loin d'être suffisant,

290
00:14:19,870 --> 00:14:23,480
‫car il ne suffit pas d'envoyer un jeton avec une requête.

291
00:14:23,480 --> 00:14:26,290
‫Il doit également être un jeton valide.

292
00:14:26,290 --> 00:14:28,410
‫Donc, fondamentalement, un jeton où personne n'a

293
00:14:28,410 --> 00:14:30,270
‫essayé de modifier la charge utile.

294
00:14:30,270 --> 00:14:34,110
‫D'accord, et la charge utile, rappelez-vous, dans notre cas,

295
00:14:34,110 --> 00:14:39,110
‫c'est toujours le user_id de l'utilisateur pour lequel le jeton a été émis.

296
00:14:39,210 --> 00:14:41,380
‫Très bien, et nous devons

297
00:14:41,380 --> 00:14:44,200
‫ensuite mettre en œuvre cette étape de vérification.

298
00:14:44,200 --> 00:14:47,160
‫Mais cette conférence est déjà assez longue et il y

299
00:14:47,160 --> 00:14:49,520
‫a encore beaucoup de choses à

300
00:14:49,520 --> 00:14:52,403
‫faire ici, alors laissons cela pour la prochaine vidéo.

