1
00:00:03,680 --> 00:00:08,435
Maintenant que nous comprenons les cookies et les sessions express,

2
00:00:08,435 --> 00:00:11,895
dans cet exercice, regardons les cookies en particulier.

3
00:00:11,895 --> 00:00:15,490
Nous verrons comment nous pouvons utiliser le middleware cookie-parser

4
00:00:15,490 --> 00:00:22,185
pour configurer et gérer les cookies dans notre application express.

5
00:00:22,185 --> 00:00:26,900
Pour revenir à notre application Confusion Server Express

6
00:00:26,900 --> 00:00:28,695
sur laquelle nous avons travaillé jusqu'

7
00:00:28,695 --> 00:00:32,420
à présent, vous remarquerez en haut que l'analyseur de cookies est

8
00:00:32,420 --> 00:00:37,200
déjà inclus dans notre application express.

9
00:00:37,200 --> 00:00:40,150
Si vous avez besoin d'installer explicitement cookie-parser, il

10
00:00:40,150 --> 00:00:45,230
vous suffit de taper « npm install cookie-parser moins save ».

11
00:00:45,230 --> 00:00:48,740
Mais comme notre Express Generator a déjà inclus

12
00:00:48,740 --> 00:00:52,810
l'analyseur de cookies dans notre application express que nous avons tracée,

13
00:00:52,810 --> 00:00:56,210
nous n'avons pas besoin de faire cette étape dans cet exercice.

14
00:00:56,210 --> 00:00:59,430
Donc, vous voyez que l'analyseur de cookies est déjà inclus là,

15
00:00:59,430 --> 00:01:03,910
et puis si vous faites défiler vers le bas,

16
00:01:03,910 --> 00:01:08,290
vous verrez que dans le code ci-dessous,

17
00:01:08,290 --> 00:01:13,925
vous verrez que l'analyseur de cookies a déjà été inclus dans le middleware là-bas.

18
00:01:13,925 --> 00:01:16,330
Maintenant, pour cet analyseur de cookies,

19
00:01:16,330 --> 00:01:19,885
nous allons utiliser des cookies signés dans cet exercice.

20
00:01:19,885 --> 00:01:21,680
Donc, pour cet analyseur de cookies,

21
00:01:21,680 --> 00:01:27,580
je vais fournir une clé secrète comme paramètre ici.

22
00:01:27,580 --> 00:01:29,990
La clé secrète pourrait être n'importe quelle chaîne là-bas,

23
00:01:29,990 --> 00:01:37,450
donc je vais juste fournir une chaîne comme celle-ci, je vais dire 12345-67890.

24
00:01:37,450 --> 00:01:39,915
Il n'a pas besoin d'être quelque chose de significatif,

25
00:01:39,915 --> 00:01:48,650
c'est juste une clé qui peut être utilisée par

26
00:01:48,650 --> 00:01:53,160
notre analyseur de cookies afin de chiffrer

27
00:01:53,160 --> 00:01:59,560
les informations et de signer le cookie qui est envoyé du serveur au client.

28
00:01:59,560 --> 00:02:05,775
Donc, une fois que nous avons configuré notre cookie-parser pour gérer les cookies signés,

29
00:02:05,775 --> 00:02:08,805
alors dans l'autorisation elle-même, de

30
00:02:08,805 --> 00:02:13,555
sorte que vous voyez que nous avons l'autorisation que nous avons intégrée ici.

31
00:02:13,555 --> 00:02:15,130
Maintenant, dans le cadre de l'autorisation,

32
00:02:15,130 --> 00:02:16,735
ce que nous allons faire est,

33
00:02:16,735 --> 00:02:23,385
la première fois que l'utilisateur essaie d'accéder au serveur,

34
00:02:23,385 --> 00:02:29,870
nous nous attendons à ce que l'utilisateur s'autorise lui-même.

35
00:02:29,870 --> 00:02:37,360
Par la suite, nous allons configurer le cookie côté client à partir du serveur et

36
00:02:37,360 --> 00:02:41,350
ensuite le client n'a pas à

37
00:02:41,350 --> 00:02:45,420
continuer explicitement à envoyer les informations d'authentification de base.

38
00:02:45,420 --> 00:02:53,335
Au lieu de cela, le client devra simplement inclure le cookie dans la demande sortante.

39
00:02:53,335 --> 00:02:56,650
Puisque nous utilisons des cookies signés ici, donc,

40
00:02:56,650 --> 00:03:01,010
lorsque la demande entrante arrive,

41
00:03:01,010 --> 00:03:04,490
donc nous allons gérer cela à l'intérieur de l'autorisation.

42
00:03:04,490 --> 00:03:08,885
Maintenant, vous vous souvenez que nous avons déjà mis en place le middleware d'autorisation ici.

43
00:03:08,885 --> 00:03:12,980
Donc, nous allons modifier ce middleware d'autorisation pour utiliser des

44
00:03:12,980 --> 00:03:17,445
cookies au lieu de l'en-tête d'autorisation.

45
00:03:17,445 --> 00:03:20,910
Donc, ce que nous allons faire ici, c'est que,

46
00:03:20,910 --> 00:03:24,710
nous allons dire « console.log » et ensuite,

47
00:03:30,340 --> 00:03:33,140
« console.log (req.signedCookies) » afin que nous puissions voir ce qui est réellement

48
00:03:33,140 --> 00:03:35,790
inclus dans le cookie signé ici.

49
00:03:35,790 --> 00:03:38,070
Maintenant, aussi après cela,

50
00:03:38,070 --> 00:03:46,275
ce que nous allons faire est que nous dirons : « Si ( ! req.signedCookies.user) ». L'

51
00:03:46,275 --> 00:03:51,635
utilisateur sera une propriété que nous allons mettre

52
00:03:51,635 --> 00:03:54,440
en place dans le cookie signé car vous verrez un

53
00:03:54,440 --> 00:03:57,520
peu plus tard comment nous allons configurer le cookie signé.

54
00:03:57,520 --> 00:04:05,600
Donc, si la demande entrante n'inclut pas le champ utilisateur dans les cookies signés,

55
00:04:05,600 --> 00:04:09,640
et cela signifie que l'utilisateur n'a pas encore été autorisé.

56
00:04:09,640 --> 00:04:11,990
Donc, dans ce cas,

57
00:04:11,990 --> 00:04:18,195
ce que nous allons faire est de s'attendre à ce que l'utilisateur s'authentifie lui-même.

58
00:04:18,195 --> 00:04:23,740
Donc, alors, nous ferons toute cette partie ici.

59
00:04:23,740 --> 00:04:27,890
Notez donc que nous l'avions déjà fait

60
00:04:27,890 --> 00:04:32,105
plus tôt où nous gérions l'en-tête d'authentification.

61
00:04:32,105 --> 00:04:34,630
Donc, nous allons prendre toute cette partie,

62
00:04:34,630 --> 00:04:41,805
jusqu'à ce « autre » ici et ensuite inclure cela à l'intérieur ici.

63
00:04:41,805 --> 00:04:48,260
Donc, essentiellement, ce que nous spécifions ici, c'est que,

64
00:04:49,110 --> 00:04:51,750
permettez-moi de le retirer.

65
00:04:51,750 --> 00:04:55,100
Comme vous le voyez, je suis très particulier à propos de mon indentation

66
00:04:55,100 --> 00:04:59,005
parce que cela garde le code plus facile à lire.

67
00:04:59,005 --> 00:05:00,740
Donc à l'intérieur de

68
00:05:00,740 --> 00:05:04,990
ceci si, donc c'est le point final du si de celui-ci ici.

69
00:05:04,990 --> 00:05:11,600
Donc, nous disons que si le cookie signé ne contient pas la propriété de l'utilisateur,

70
00:05:11,600 --> 00:05:17,960
alors nous attendons à ce que l'utilisateur autorise en incluant l'en-tête d'autorisation.

71
00:05:17,960 --> 00:05:20,090
Nous allons donc chercher l'en-tête d'autorisation.

72
00:05:20,090 --> 00:05:22,760
Si l'en-tête d'autorisation n'est pas disponible,

73
00:05:22,760 --> 00:05:28,190
nous rejetterons simplement l'utilisateur et l'inviterons

74
00:05:28,190 --> 00:05:34,120
à entrer le nom d'utilisateur et le mot de passe comme nous l'avons fait dans l'exercice précédent.

75
00:05:34,120 --> 00:05:36,600
Si l'en-tête d'autorisation est inclus,

76
00:05:36,600 --> 00:05:41,165
nous allons traiter l'en-tête d'autorisation comme nous l'avons fait auparavant,

77
00:05:41,165 --> 00:05:44,565
et si l'utilisateur est un utilisateur autorisé,

78
00:05:44,565 --> 00:05:49,620
rappelez-vous que nous avons appelé le suivant pour laisser l'utilisateur aller de l'avant.

79
00:05:49,620 --> 00:05:51,480
Maintenant, à ce stade,

80
00:05:51,480 --> 00:05:56,685
ce que nous allons faire, c'est que nous allons dire,

81
00:05:56,685 --> 00:06:00,380
nous allons mettre en place le cookie à ce stade.

82
00:06:00,380 --> 00:06:04,725
Donc c'est ici que nous allons utiliser le cookie res ici.

83
00:06:04,725 --> 00:06:07,880
Notez que le cookie n'existe pas,

84
00:06:07,880 --> 00:06:10,125
donc nous dirons « res.cookie ».

85
00:06:10,125 --> 00:06:15,275
Comme vous pouvez le voir, le cookie res lui-même prend la première chaîne de nom de valeur, la chaîne de

86
00:06:15,275 --> 00:06:19,060
valeur et les options, les options de cookie.

87
00:06:19,060 --> 00:06:25,820
Définissez le nom du cookie sur la valeur avec les options données et les options sont incluses ici,

88
00:06:25,820 --> 00:06:27,410
quelques options pour le cookie ici.

89
00:06:27,410 --> 00:06:31,040
Je vais simplement utiliser quelques-unes des options ici.

90
00:06:31,040 --> 00:06:37,500
Donc, nous allons dire, « res.cookie » et puis je vais configurer le cookie avec le nom de l'utilisateur.

91
00:06:37,680 --> 00:06:41,890
Maintenant, remarquez que c'est la raison

92
00:06:41,890 --> 00:06:45,400
pour laquelle je vérifie le req.signedCookies.user là-haut.

93
00:06:45,400 --> 00:06:51,380
Donc, nous allons dire « res.cookie ('user',) » et

94
00:06:51,380 --> 00:06:56,290
le champ utilisateur je vais le définir sur 'admin' et

95
00:06:56,290 --> 00:07:01,390
ensuite je vais configurer ceci pour être un cookie signé.

96
00:07:01,390 --> 00:07:03,725
Donc, je dirai « signé : vrai ».

97
00:07:03,725 --> 00:07:06,295
Donc, ce qui signifie que mon cookie-parser veillera à

98
00:07:06,295 --> 00:07:10,120
ce que ce cookie soit signé et configuré.

99
00:07:10,120 --> 00:07:14,290
Donc, c'est l'option que j'ai configurée pour le cookie res ici.

100
00:07:14,290 --> 00:07:16,360
Donc, cela inclura

101
00:07:16,360 --> 00:07:22,300
ce nom particulier dans le cookie signé avec cette valeur particulière.

102
00:07:22,300 --> 00:07:26,160
Donc c'est la raison pour laquelle je suis capable de vérifier cette valeur ici.

103
00:07:26,160 --> 00:07:27,770
Donc, si cela n'existe pas,

104
00:07:27,770 --> 00:07:33,620
alors bien sûr, je m'attends à ce que l'utilisateur s'authentifie en utilisant

105
00:07:33,620 --> 00:07:36,045
l'authentification de base, et si l'authentification de base est réussie,

106
00:07:36,045 --> 00:07:40,190
alors je vais configurer le cookie ici et configurer

107
00:07:40,190 --> 00:07:45,440
le champ cookie dans le message de réponse sortant ici et

108
00:07:45,440 --> 00:07:49,730
cela demandera le pour configurer le cookie côté client, puis

109
00:07:49,730 --> 00:07:55,055
toutes les demandes suivantes incluront ce cookie dans la demande du client.

110
00:07:55,055 --> 00:08:02,085
Donc, c'est comme ça que je gère le fait quand le cookie.user n'existe pas.

111
00:08:02,085 --> 00:08:05,120
Là. Si elle existe,

112
00:08:05,120 --> 00:08:07,765
alors la partie else,

113
00:08:07,765 --> 00:08:11,155
donc cela signifie que le cookie signé

114
00:08:11,155 --> 00:08:16,415
existe déjà et que la propriété de l'utilisateur est définie sur cela,

115
00:08:16,415 --> 00:08:18,255
alors dans le reste,

116
00:08:18,255 --> 00:08:19,810
ce que je vais vérifier est

117
00:08:19,810 --> 00:08:33,150
si req.signedCookies.user est admin.

118
00:08:33,150 --> 00:08:37,380
Ensuite, cela signifie que le cookie signé contient les informations correctes.

119
00:08:37,380 --> 00:08:39,780
Alors, je dirai ensuite.

120
00:08:39,780 --> 00:08:44,800
Donc, ce qui signifie que vous allez permettre à la demande de passer.

121
00:08:46,520 --> 00:08:55,250
Sinon, ce cookie n'est pas valide car il ne contient pas cette valeur correcte.

122
00:08:55,250 --> 00:08:57,635
Donc, cela signifie que c'est une erreur.

123
00:08:57,635 --> 00:08:59,749
Donc, dans ce cas,

124
00:08:59,749 --> 00:09:02,750
nous dirons que vous n'êtes pas authentifié,

125
00:09:02,750 --> 00:09:12,075
et alors nous allons simplement provoquer l'erreur dans ce point.

126
00:09:12,075 --> 00:09:15,640
Maintenant, nous n'allons pas inviter l'utilisateur pour

127
00:09:15,640 --> 00:09:18,585
la session car cela doit avoir été fait plus tôt.

128
00:09:18,585 --> 00:09:20,870
Maintenant, normalement, cela ne se produirait pas

129
00:09:20,870 --> 00:09:24,470
parce que si le cookie est déjà défini du côté client,

130
00:09:24,470 --> 00:09:27,005
alors il doit inclure la valeur correcte de toute façon.

131
00:09:27,005 --> 00:09:29,850
Mais pour des raisons d'exhaustivité,

132
00:09:29,850 --> 00:09:35,315
j'ai également inclus la vérification d'erreur else ici à ce stade. C'est ça.

133
00:09:35,315 --> 00:09:38,210
Avec cette configuration, nous avons transformé

134
00:09:38,210 --> 00:09:43,710
notre application express en une application qui gère les cookies ici.

135
00:09:43,710 --> 00:09:48,405
Notez encore une fois, laissez-moi attirer votre attention sur ce que nous faisons ici une fois de plus.

136
00:09:48,405 --> 00:09:50,060
Ici, nous vérifions

137
00:09:50,060 --> 00:09:54,970
que la propriété de l'utilisateur dans les cookies signés n'existe pas,

138
00:09:54,970 --> 00:09:57,380
ou même le cookie signé lui-même n'existe pas.

139
00:09:57,380 --> 00:10:02,595
Ensuite, nous nous attendons à ce que l'autorisation de base soit faite.

140
00:10:02,595 --> 00:10:04,850
Si l'autorisation est réussie

141
00:10:04,850 --> 00:10:09,860
, je vais configurer le cookie en utilisant le res.cookie ici.

142
00:10:09,860 --> 00:10:14,035
Ensuite, toutes les demandes suivantes porteront le cookie signé de toute façon,

143
00:10:14,035 --> 00:10:17,080
et alors je vais vérifier que le cookie signé est

144
00:10:17,080 --> 00:10:22,905
un cookie signé valide et signé et contient la propriété de l'utilisateur qui est définie égale à admin.

145
00:10:22,905 --> 00:10:25,680
Si c'est le cas, il s'agit d'un accès autorisé,

146
00:10:25,680 --> 00:10:27,935
donc il permettra de poursuivre.

147
00:10:27,935 --> 00:10:31,920
Si ce n'est pas le cas, je soulève une erreur à ce stade.

148
00:10:31,920 --> 00:10:39,710
Correction mineure, les nouvelles versions de Node.js s'attendent à ce que vous l'utilisiez comme

149
00:10:39,710 --> 00:10:47,500
nouveau tampon. From au lieu de nouveau tampon afin de traiter certains problèmes de sécurité.

150
00:10:47,500 --> 00:10:53,165
Donc il suffit de corriger cette ligne à nouveau tampon .From. C'est ça.

151
00:10:53,165 --> 00:10:59,600
Sauvegardons les changements, puis regardons notre application dans ce facteur.

152
00:10:59,600 --> 00:11:03,310
Si le serveur précédent est en cours d'exécution,

153
00:11:03,310 --> 00:11:06,155
arrêtez-le simplement en tapant Control C,

154
00:11:06,155 --> 00:11:09,665
puis redémarrez le serveur en disant npm start.

155
00:11:09,665 --> 00:11:13,305
Bien sûr, assurez-vous que votre serveur MongoDB est opérationnel.

156
00:11:13,305 --> 00:11:17,140
Sinon, votre serveur express ne démarrera pas correctement.

157
00:11:17,140 --> 00:11:19,955
Donc, une fois que votre serveur express est démarré,

158
00:11:19,955 --> 00:11:26,250
allons voir notre Facteur et essayons de se connecter au serveur.

159
00:11:26,250 --> 00:11:30,970
Et je vais vous montrer quelques aspects sur la façon dont les cookies sont gérés.

160
00:11:30,970 --> 00:11:32,939
Maintenant, allez chez Facteur,

161
00:11:32,939 --> 00:11:35,980
laissez-moi effacer toutes ces informations

162
00:11:35,980 --> 00:11:40,745
de mon Facteur et nous commencerons par les bases.

163
00:11:40,745 --> 00:11:44,265
Alors laissez-moi essayer d'accéder au localhost : 3000/plats.

164
00:11:44,265 --> 00:11:47,335
Maintenant, après avoir tout effacé,

165
00:11:47,335 --> 00:11:49,460
je vais envoyer la demande et enregistrer.

166
00:11:49,460 --> 00:11:51,150
Et donc du côté serveur,

167
00:11:51,150 --> 00:11:53,600
il dit que vous n'êtes pas authentifié.

168
00:11:53,600 --> 00:11:55,365
Ensuite, lorsque vous regardez l'en-tête,

169
00:11:55,365 --> 00:12:00,350
cela me demande de m'authentifier en utilisant le WW-Authenticate.

170
00:12:00,350 --> 00:12:05,115
Alors maintenant, laissez-moi entrer dans l'autorisation, puis configurer l'autorisation de base,

171
00:12:05,115 --> 00:12:08,415
puis je vais configurer l'autorisation en tant qu'administrateur,

172
00:12:08,415 --> 00:12:14,200
puis mot de passe, puis mettre à jour la demande afin que l'en-tête

173
00:12:14,200 --> 00:12:20,090
contienne maintenant l'en-tête d'autorisation ici avec les informations là-bas.

174
00:12:20,090 --> 00:12:23,900
Et puis laissez-moi envoyer la requête Git sur cette partie.

175
00:12:23,900 --> 00:12:25,805
Si j'envoie la requête Git,

176
00:12:25,805 --> 00:12:34,205
alors en réponse, vous voyez que la requête Git a réussi.

177
00:12:34,205 --> 00:12:38,300
Notez aussi quelques autres choses.

178
00:12:38,300 --> 00:12:41,060
Vous verrez que le statut est 200 OK.

179
00:12:41,060 --> 00:12:50,805
Notez également qu'un cookie a été mis en place côté client dans Postman ici.

180
00:12:50,805 --> 00:12:53,120
Ce cookie contient des informations.

181
00:12:53,120 --> 00:12:55,420
Nous allons regarder les détails du cookie dans une minute.

182
00:12:55,420 --> 00:12:57,265
Ensuite, quand vous regardez l'en-tête,

183
00:12:57,265 --> 00:13:03,130
vous voyez dans l'en-tête cette valeur ici disant Set-Cookie,

184
00:13:03,130 --> 00:13:06,165
puis cette information qui vient ici.

185
00:13:06,165 --> 00:13:10,290
Maintenant, si vous regardez attentivement,

186
00:13:10,290 --> 00:13:13,965
vous verrez quelque chose ici dit utilisateur égal à,

187
00:13:13,965 --> 00:13:18,000
et puis vous voyez cette valeur ici, admin là-bas.

188
00:13:18,000 --> 00:13:23,845
Donc, vous remarquez que quelque chose a été enfermé dans le cookie.

189
00:13:23,845 --> 00:13:26,465
Si vous voulez vraiment examiner le cookie,

190
00:13:26,465 --> 00:13:30,355
allez ici dans Postman, puis cliquez sur ces clés,

191
00:13:30,355 --> 00:13:37,205
puis cela vous montrera tous les cookies qui ont été configurés sur ce côté client.

192
00:13:37,205 --> 00:13:43,365
Ensuite, en particulier, maintenant laissez-moi effacer tous ces autres cookies.

193
00:13:43,365 --> 00:13:48,640
J' en ai probablement utilisé certains pour une autre raison.

194
00:13:48,640 --> 00:13:51,290
Laisse-moi juste nettoyer ces cookies.

195
00:13:51,290 --> 00:13:53,020
Bref, si vous les voyez,

196
00:13:53,020 --> 00:13:54,355
vous pouvez les laisser là.

197
00:13:54,355 --> 00:13:56,385
Pas un gros problème.

198
00:13:56,385 --> 00:14:00,220
Concentrez-vous spécifiquement sur l'hôte local ici,

199
00:14:00,220 --> 00:14:02,620
puis vous voyez ce cookie ici.

200
00:14:02,620 --> 00:14:03,780
Il suffit de cliquer sur le cookie,

201
00:14:03,780 --> 00:14:08,710
puis vous voyez la valeur réelle à l'intérieur du cookie qui y est stocké.

202
00:14:08,710 --> 00:14:12,130
Puis aussi la date d'expiration de cette configuration de cookie ici.

203
00:14:12,130 --> 00:14:15,460
Maintenant, cette valeur sera exactement ce que vous avez vu dans

204
00:14:15,460 --> 00:14:18,890
le cookie défini qui est venu du côté serveur.

205
00:14:18,890 --> 00:14:24,620
Maintenant, cela signifie également que dans les requêtes suivantes qui entrent,

206
00:14:24,620 --> 00:14:27,365
donc même si j'efface mon autorisation,

207
00:14:27,365 --> 00:14:31,010
et même si je supprime l'en-tête d'autorisation,

208
00:14:31,150 --> 00:14:34,225
parce que le cookie a été configuré,

209
00:14:34,225 --> 00:14:37,110
ce cookie a été configuré sur mon hôte local,

210
00:14:37,110 --> 00:14:44,335
chaque requête ultérieure va à ce serveur inclura ce cookie.

211
00:14:44,335 --> 00:14:51,000
Donc, même si je n'aurais pas les en-têtes mis en place,

212
00:14:51,000 --> 00:14:52,285
si j'envoie la demande,

213
00:14:52,285 --> 00:14:57,940
vous remarquerez que la requête Git fonctionne comme avant sans aucun problème, en

214
00:14:57,940 --> 00:15:02,195
raison du fait que chaque requête sortante inclura automatiquement

215
00:15:02,195 --> 00:15:08,075
ce cookie dans la requête sortante de mon Postman ici.

216
00:15:08,075 --> 00:15:13,850
Cela démontre l'utilisation de cookies dans notre application.

217
00:15:13,850 --> 00:15:18,260
Avec cela, nous avons vu comment les cookies peuvent être

218
00:15:18,260 --> 00:15:22,404
configurés et traités sur notre serveur express en utilisant l'analyseur de cookies,

219
00:15:22,404 --> 00:15:25,330
et comment nous pouvons configurer des cookies signés.

220
00:15:25,330 --> 00:15:31,390
C' est le bon moment pour vous de faire un commit git avec les cookies de message.