1
00:00:03,950 --> 00:00:09,180
Maintenant que nous avons compris passeport et comment passeport ajoute

2
00:00:09,180 --> 00:00:14,294
un middleware d'authentification simple pour notre application NodeJS,

3
00:00:14,294 --> 00:00:18,435
et fournit un

4
00:00:18,435 --> 00:00:22,935
moyen flexible et facile à configurer et fournit diverses stratégies d'authentification des utilisateurs,

5
00:00:22,935 --> 00:00:27,850
partons un voyage avec notre passeport.

6
00:00:27,890 --> 00:00:31,020
Pour commencer cet exercice,

7
00:00:31,020 --> 00:00:33,945
comme première étape, nous allons installer passeport,

8
00:00:33,945 --> 00:00:40,135
passeport-local et passeport-local-mongoose modules de noeud dans notre serveur de confusion.

9
00:00:40,135 --> 00:00:44,030
Donc, à l'invite de type npm instal_passeport,

10
00:00:44,030 --> 00:00:49,820
passeport-local,

11
00:00:49,820 --> 00:00:59,430
passeport local-mongoose mnus moins enregistrer et installer ces trois modules.

12
00:00:59,430 --> 00:01:05,980
Comme vous pouvez le voir pour le moment, nous commençons avec passeport 0.4.0,

13
00:01:05,980 --> 00:01:15,004
passeport-local 1.0.0 et passeport-local-mongoose versions 5.0.1 dans ce cours.

14
00:01:15,004 --> 00:01:20,110
Maintenant que nous avons installé passeport, passeport-local et passeport-local-mongoose,

15
00:01:20,110 --> 00:01:25,640
allons au serveur de confusion et allons au fichier user.js.

16
00:01:25,640 --> 00:01:31,325
Nous allons mettre à jour le schéma utilisateur et le modèle pour utiliser le passeport-local-mongoose.

17
00:01:31,325 --> 00:01:33,735
Pour ce faire, ici nous dirons

18
00:01:33,735 --> 00:01:41,060
var PassportLocalMongoose

19
00:01:41,060 --> 00:01:45,390
exiger passeport-local-mongoose.

20
00:01:46,190 --> 00:01:50,330
Donc, cela nous allons installer comme

21
00:01:50,330 --> 00:01:56,780
le plugin mongoose dans notre application et nous pouvons supprimer le nom d'utilisateur et le

22
00:01:56,780 --> 00:02:00,440
mot de passe parce que ceux-ci seraient automatiquement ajoutés par

23
00:02:00,440 --> 00:02:04,535
le plugin passport-local-mongoose ici et

24
00:02:04,535 --> 00:02:12,980
pour l'utiliser comme un plugin dans notre schéma et modèle mongoose.

25
00:02:12,980 --> 00:02:20,160
On dira brancher l'utilisateur et passeport-local-mongoose.

26
00:02:20,160 --> 00:02:23,360
Donc, ce sera automatiquement comme je l'ai dit en ajoutant le support pour le

27
00:02:23,360 --> 00:02:28,040
nom d'utilisateur et le stockage haché du mot de passe en utilisant

28
00:02:28,040 --> 00:02:33,305
le hachage et le sel et en ajoutant

29
00:02:33,305 --> 00:02:37,235
des méthodes supplémentaires sur le schéma de l'utilisateur

30
00:02:37,235 --> 00:02:40,880
et le modèle qui sont utiles pour l'authentification du passeport.

31
00:02:40,880 --> 00:02:48,390
Donc, une fois que nous avons terminé la mise à jour du fichier user.js puis dans notre dossier de projet,

32
00:02:48,390 --> 00:02:55,160
nous allons créer un nouveau fichier et le nommer comme authenticate.js.

33
00:02:55,160 --> 00:02:57,800
Dans le fichier authentic.js,

34
00:02:57,800 --> 00:03:03,420
laissez-moi importer un passeport.

35
00:03:03,940 --> 00:03:10,700
Donc, nous allons dire exiger passeport et nous allons

36
00:03:10,700 --> 00:03:16,700
utiliser ce fichier pour stocker les stratégies d'authentification que nous allons configurer.

37
00:03:16,700 --> 00:03:26,195
Donc, nous allons dire var. LocalStrategy exige passeport local, de

38
00:03:26,195 --> 00:03:36,140
sorte que le module local passeport exporte une stratégie que nous pouvons utiliser pour notre application.

39
00:03:36,140 --> 00:03:39,800
Donc, nous allons dire Passport-local.Strategy

40
00:03:39,800 --> 00:03:56,700
et puis nous allons importer l'utilisateur de modèles utilisateur.

41
00:03:58,550 --> 00:04:06,270
Configurez maintenant le passeport avec la nouvelle stratégie locale

42
00:04:06,270 --> 00:04:13,970
et ensuite nous allons l'exporter à partir de ce fichier car ce sera un module de nœud.

43
00:04:13,970 --> 00:04:23,940
Donc, nous allons dire exports.local et nous allons dire passeport et vous

44
00:04:23,940 --> 00:04:28,580
pouvez voir que le passeport prend en charge les différentes méthodes

45
00:04:28,580 --> 00:04:33,710
ici donc nous allons dire l'utilisation du passeport et dire

46
00:04:33,710 --> 00:04:39,125
nouvelle stratégie locale et ensuite c'est là

47
00:04:39,125 --> 00:04:47,715
que les fonctions qui sont supportées par le passeport-local-mongoose viennent à notre aide.

48
00:04:47,715 --> 00:04:52,225
La stratégie locale devra donc être fournie avec la fonction de vérification.

49
00:04:52,225 --> 00:04:55,210
A l'intérieur de cette fonction, nous vérifierons l'utilisateur.

50
00:04:55,210 --> 00:04:59,090
Cette fonction de vérification sera appelée avec le nom d'utilisateur et le mot de passe que le

51
00:04:59,090 --> 00:05:03,380
passeport extrait de notre demande entrante.

52
00:05:03,380 --> 00:05:09,620
Maintenant, dans la demande entrante pour le LocalStrategy, le nom d'utilisateur et

53
00:05:09,620 --> 00:05:16,800
le mot de passe doivent être fournis dans le corps du message sous la forme d'une chaîne Json.

54
00:05:17,680 --> 00:05:21,560
Encore une fois parce que nous faisons body-parser afin qu'il soit

55
00:05:21,560 --> 00:05:24,500
ajouté dans le corps du message, puis à partir de là passeport,

56
00:05:24,500 --> 00:05:29,000
nous allons récupérer cela et puis utiliser cela et fournir le nom d'utilisateur et le mot de passe

57
00:05:29,000 --> 00:05:34,775
comme paramètres de la fonction de vérification que nous allons fournir à la stratégie locale.

58
00:05:34,775 --> 00:05:37,565
Puisque nous utilisons passeport mongoose plugin,

59
00:05:37,565 --> 00:05:44,915
le plugin mongoose lui-même ajoute cette fonction appelée user.authenticate.

60
00:05:44,915 --> 00:05:51,495
Il ajoute donc cette méthode au schéma utilisateur et au modèle.

61
00:05:51,495 --> 00:05:55,775
Nous allons fournir cela comme la fonction

62
00:05:55,775 --> 00:06:00,350
qui fournira l'authentification pour le LocalStrategy.

63
00:06:00,350 --> 00:06:02,540
Maintenant, si vous n'utilisez pas

64
00:06:02,540 --> 00:06:06,875
passeport-local-mongoose lorsque vous configurez un plugin mongoose que nous avons fait,

65
00:06:06,875 --> 00:06:08,060
si vous n'utilisez pas cela,

66
00:06:08,060 --> 00:06:12,540
alors vous devez écrire votre propre fonction d'authentification utilisateur ici.

67
00:06:12,540 --> 00:06:15,720
Dans la conférence plus tôt,

68
00:06:15,720 --> 00:06:18,860
je vous avais montré une fonction d'authentification utilisateur simple

69
00:06:18,860 --> 00:06:22,580
qui peut être utilisée ici, mais celle qui est

70
00:06:22,580 --> 00:06:25,610
fournie par le module passeport-local-mongoose est plus

71
00:06:25,610 --> 00:06:30,200
complète et c'est donc ce que nous allons utiliser dans notre application.

72
00:06:30,200 --> 00:06:36,365
De plus, puisque nous utilisons toujours des sessions pour suivre les utilisateurs dans notre application,

73
00:06:36,365 --> 00:06:43,775
nous devons sérialiser et désérialiser l'utilisateur.

74
00:06:43,775 --> 00:06:47,345
Donc, cela prend essentiellement les informations de l'utilisateur.

75
00:06:47,345 --> 00:06:54,815
Rappelons maintenant que l'authentification du passeport va monter la propriété req.user ou l'utilisateur au

76
00:06:54,815 --> 00:06:58,715
message de demande et

77
00:06:58,715 --> 00:07:04,610
que les informations de l'utilisateur seront sérialisées et désérialisées réalisées en utilisant

78
00:07:04,610 --> 00:07:17,295
ce dicton utilisateur sérialiser et désérialiser passeport utilisateur.

79
00:07:17,295 --> 00:07:22,235
Aussi, nous dirons utilisateur désérialiser utilisateur.

80
00:07:22,235 --> 00:07:27,920
Ces deux fonctions qu'ils sérialisent l'utilisateur et désérialiser

81
00:07:27,920 --> 00:07:35,030
l'utilisateur sont fournies sur le schéma utilisateur et le modèle par l'utilisation du plugin passport-local-mongoose ici.

82
00:07:35,030 --> 00:07:38,240
Donc, cela prendra soin de tout ce qu'il est nécessaire pour

83
00:07:38,240 --> 00:07:42,860
notre soutien pour les sessions de passeport.

84
00:07:42,860 --> 00:07:48,375
Donc, une fois que nous avons terminé cette mise à jour du fichier authenticate.js,

85
00:07:48,375 --> 00:07:54,200
ce fichier sera nécessaire partout où il est nécessaire pour que nous puissions l'utiliser dans notre authentification.

86
00:07:54,200 --> 00:07:57,695
Ensuite, allez au fichier users.js,

87
00:07:57,695 --> 00:07:59,795
dans le fichier users.js,

88
00:07:59,795 --> 00:08:04,170
nous allons d'abord importer le passeport.

89
00:08:04,170 --> 00:08:09,525
Donc, nous allons dire passeport var exiger passeport.

90
00:08:09,525 --> 00:08:16,100
Ensuite, parce que nous utilisons le plugin mongoose local passeport,

91
00:08:16,100 --> 00:08:20,525
le plugin mongoose lui-même fournit quelques métriques qui

92
00:08:20,525 --> 00:08:25,380
nous sont utiles dans le processus d'inscription et dans le processus de connexion.

93
00:08:25,380 --> 00:08:29,030
Donc, en descendant au poste de routeur ici,

94
00:08:29,030 --> 00:08:34,120
le plugin mongoose nous fournit une méthode appelée register,

95
00:08:34,120 --> 00:08:37,275
sur le schéma de l'utilisateur et le modèle.

96
00:08:37,275 --> 00:08:44,460
Donc, nous allons dire registre utilisateur et cela sera transformé en dire nouvel utilisateur.

97
00:08:44,460 --> 00:08:51,035
Ce nouvel utilisateur est le premier paramètre que le registre prend

98
00:08:51,035 --> 00:08:58,245
et le second paramètre est le mot de passe du corps req.

99
00:08:58,245 --> 00:09:05,440
Donc, le mot de passe qui vient en tant que deuxième paramètre dans le corps du message.

100
00:09:05,440 --> 00:09:08,460
Rappelez-vous donc que le nom d'utilisateur et le mot

101
00:09:08,460 --> 00:09:12,020
de passe sont transmis lorsque vous vous inscrivez dans le corps du message.

102
00:09:12,020 --> 00:09:14,255
Maintenant, dans ce cas,

103
00:09:14,255 --> 00:09:19,855
cela entraînera une fonction de rappel fournissant l'erreur

104
00:09:19,855 --> 00:09:25,825
et l'utilisateur comme les deux valeurs de rappel ici et malheureusement,

105
00:09:25,825 --> 00:09:28,790
cela ne fonctionne alors pas dans ce cas.

106
00:09:28,790 --> 00:09:33,045
Donc, je vais devoir découper cela d'ici et ensuite

107
00:09:33,045 --> 00:09:39,415
gérer cela à l'intérieur de cette méthode de rappel ici.

108
00:09:39,415 --> 00:09:43,820
Donc, laissez-moi juste indenter ceci,

109
00:09:43,820 --> 00:09:48,060
afin qu'il soit plus facile de voir le code ici.

110
00:09:48,060 --> 00:09:51,830
Donc, je vais dire, le registre de l'utilisateur et le premier paramètre est

111
00:09:51,830 --> 00:09:53,630
un nouvel utilisateur créé avec

112
00:09:53,630 --> 00:09:57,590
l'alimentation du nom d'utilisateur ici et le deuxième paramètre est le mot de passe,

113
00:09:57,590 --> 00:10:02,550
et puis le résultat est cette fonction de rappel qui

114
00:10:02,550 --> 00:10:06,100
appellera, nous dirons l'utilisateur d'erreur ici.

115
00:10:06,100 --> 00:10:11,260
Dans ce cas, nous devons éditer un peu le code ici.

116
00:10:11,260 --> 00:10:14,620
Donc, dans la première partie,

117
00:10:14,620 --> 00:10:21,850
nous dirons si erreur,

118
00:10:21,850 --> 00:10:28,150
alors ils devront renvoyer explicitement la réponse.

119
00:10:28,150 --> 00:10:34,945
Donc, je vais juste copier ces deux-là.

120
00:10:34,945 --> 00:10:37,670
Donc, nous allons dire, si erreur,

121
00:10:37,740 --> 00:10:40,860
puis code d'état res,

122
00:10:40,860 --> 00:10:46,970
nous allons définir cela à 500 et définir le type de contenu d'en-tête et puis,

123
00:10:46,970 --> 00:10:52,520
nous allons définir res json, puis erreur, erreur.

124
00:10:52,520 --> 00:10:56,790
Donc, nous allons construire un objet json avec

125
00:10:56,790 --> 00:11:01,590
l'erreur comme valeur de la propriété error dedans, puis renvoyer cela.

126
00:11:01,590 --> 00:11:06,145
Donc, c'est comme ça que vous gérez l'erreur dans ce cas.

127
00:11:06,145 --> 00:11:11,110
Sinon, ce que nous faisons ici, c'est que nous

128
00:11:11,110 --> 00:11:18,970
dirons passeport authentifier local.

129
00:11:18,970 --> 00:11:23,810
Donc, si nous allons utiliser passeport pour authentifier à nouveau l'utilisateur.

130
00:11:23,810 --> 00:11:25,930
Donc, nous dirons que le passeport authentifie local.

131
00:11:25,930 --> 00:11:28,820
Pour s'assurer que l'enregistrement de l'utilisateur a été réussi.

132
00:11:28,820 --> 00:11:33,145
nous allons essayer d'authentifier le même utilisateur que nous venons d'enregistrer et

133
00:11:33,145 --> 00:11:38,335
ici nous dirons req res et cela

134
00:11:38,335 --> 00:11:48,355
retournera comme une troisième valeur cette fonction à l'intérieur de laquelle,

135
00:11:48,355 --> 00:11:52,300
nous allons renvoyer la réponse à notre client.

136
00:11:52,300 --> 00:12:01,140
Donc on va dire. Laissez-moi supprimer ceci et ensuite l'ajouter ici.

137
00:12:01,140 --> 00:12:03,190
Nous pouvons maintenant supprimer cela alors,

138
00:12:03,190 --> 00:12:11,070
parce que cela n'est alors pas nécessaire pour nous et c'est la fermeture du registre des utilisateurs.

139
00:12:11,070 --> 00:12:12,990
Dans l'autre partie,

140
00:12:12,990 --> 00:12:16,810
nous allons faire passeport authentifier local.

141
00:12:16,970 --> 00:12:19,510
Regardez la syntaxe ici.

142
00:12:19,510 --> 00:12:23,425
Donc, c'est passeport authentifier local et ensuite,

143
00:12:23,425 --> 00:12:29,325
nous devons appeler cette fonction ici que les paramètres req,

144
00:12:29,325 --> 00:12:35,245
res et que le troisième étant une fonction de rappel ici. C'est

145
00:12:35,245 --> 00:12:42,275
ainsi que cela est mis en œuvre parce que passeport s'attend à ce que vous le fassiez de cette façon.

146
00:12:42,275 --> 00:12:46,495
Ici, nous allons définir le code d'état req res est 200,

147
00:12:46,495 --> 00:12:49,930
définir l'application de contenu d'en-tête json, puis nous allons

148
00:12:49,930 --> 00:12:59,410
res l'enregistrement d'état json réussie et nous ne passerons pas la valeur de l'utilisateur ici.

149
00:12:59,410 --> 00:13:03,240
Au lieu de cela, ce que je vais faire est que je vais

150
00:13:03,240 --> 00:13:10,695
mettre un drapeau appelé succès ici à vrai.

151
00:13:10,695 --> 00:13:15,620
Maintenant, de cette façon, du côté du client lorsque ce json est reçu,

152
00:13:15,620 --> 00:13:20,550
le client peut simplement extraire la propriété success et ensuite vérifier s'il est vrai

153
00:13:20,550 --> 00:13:25,695
ou ne pas vérifier rapidement si l'enregistrement a réussi ou non.

154
00:13:25,695 --> 00:13:32,000
C' est ainsi que nous allons gérer le processus d'enregistrement des utilisateurs ici.

155
00:13:32,000 --> 00:13:35,470
Notez donc comment le code a considérablement simplifié.

156
00:13:35,470 --> 00:13:38,924
Si l'utilisateur ne s'est pas enregistré correctement,

157
00:13:38,924 --> 00:13:45,665
cela enverra une erreur de manière appropriée et l'authentification échouera également.

158
00:13:45,665 --> 00:13:51,115
Donc, les deux cas, vous allez attraper la situation lorsque l'authentification de l'utilisateur échoue.

159
00:13:51,115 --> 00:13:56,270
Maintenant, le processus de connexion lui-même est également considérablement simplifié.

160
00:13:56,270 --> 00:14:01,650
Donc, nous n'avons pas besoin de faire tout cela dans la route de connexion ici.

161
00:14:01,650 --> 00:14:07,220
Donc, je vais supprimer tout ce code et cette route de connexion devient simplifiée ici.

162
00:14:07,220 --> 00:14:14,365
Maintenant, pour la connexion route- pour le poste de routeur quand nous le faisons ici,

163
00:14:14,365 --> 00:14:19,150
ici aussi nous nous attendons à ce que le nom d'utilisateur et

164
00:14:19,150 --> 00:14:24,240
le mot de passe soient inclus dans le corps du message de poste qui lui arrive.

165
00:14:24,240 --> 00:14:32,030
Contrairement au cas précédent où nous incluions cela dans l'en-tête d'autorisation,

166
00:14:32,030 --> 00:14:37,865
ici nous nous attendons à ce que cela soit inclus dans le corps du message de publication entrant.

167
00:14:37,865 --> 00:14:47,730
Donc, pour s'authentifier, nous allons simplement dire passeport authentifier et nous allons dire local ici.

168
00:14:47,730 --> 00:14:52,320
Donc ce sera le deuxième appel ici.

169
00:14:52,320 --> 00:14:55,360
Donc c'est le deuxième middleware ici que nous allons couper.

170
00:14:55,360 --> 00:15:01,690
Donc, lorsque la publication du routeur arrive sur le point de terminaison de connexion,

171
00:15:01,690 --> 00:15:06,095
nous allons d'abord appeler le passeport authentifier local.

172
00:15:06,095 --> 00:15:09,660
Si cela réussit, cela arrivera

173
00:15:09,660 --> 00:15:13,485
et la fonction suivante qui suit sera exécutée.

174
00:15:13,485 --> 00:15:15,760
S' il y a une erreur dans l'authentification,

175
00:15:15,760 --> 00:15:18,850
ce passeport authentifier local

176
00:15:18,850 --> 00:15:24,210
enverra automatiquement une réponse au client au sujet de l'échec de l'authentification.

177
00:15:24,210 --> 00:15:26,190
Donc, cela est déjà pris en charge.

178
00:15:26,190 --> 00:15:33,345
Donc, remarquez comment le code dans le processus de connexion est considérablement simplifié.

179
00:15:33,345 --> 00:15:36,565
Donc, si cela se passe avec succès,

180
00:15:36,565 --> 00:15:42,775
j'ai seulement besoin de vérifier les req et res et ici ce que je vais faire

181
00:15:42,775 --> 00:15:49,665
est que je vais simplement renvoyer un message au côté client avec cette information ici.

182
00:15:49,665 --> 00:15:53,775
Nous dirons le code d'état res 200,

183
00:15:53,775 --> 00:16:02,145
res ensemble type de contenu d'en-tête application json et res json succès vrai statut.

184
00:16:02,145 --> 00:16:13,010
Nous dirons que vous êtes connecté avec succès.

185
00:16:13,010 --> 00:16:18,100
C' est ça. C'est le changement que nous allons apporter au fichier users.js.

186
00:16:18,100 --> 00:16:21,275
Donc, remarquez comment, en raison du passeport utilisateur, à

187
00:16:21,275 --> 00:16:24,655
la fois le processus d'inscription et le processus de connexion,

188
00:16:24,655 --> 00:16:28,205
le code a considérablement simplifié dans ce cas.

189
00:16:28,205 --> 00:16:34,465
Maintenant, nous allons passer à mettre à jour le fichier app.js allant à app.js maintenant.

190
00:16:34,465 --> 00:16:37,555
Dans app.js ici,

191
00:16:37,555 --> 00:16:50,540
nous allons entrer passeport.

192
00:16:51,270 --> 00:16:55,310
Ensuite, nous allons importer

193
00:16:59,820 --> 00:17:07,120
le module d'authentification que nous venons d'implémenter.

194
00:17:07,120 --> 00:17:15,390
Nous dirons var authenticate et dans le fichier app.js ci-dessous après session,

195
00:17:15,390 --> 00:17:25,320
nous ajoutons app.use (passeport.initialize),

196
00:17:25,320 --> 00:17:32,100
et app.use (.session).

197
00:17:32,950 --> 00:17:37,810
Si l'utilisateur est connecté,

198
00:17:37,810 --> 00:17:42,945
alors ce qui se passe est que lorsque la session est relancée,

199
00:17:42,945 --> 00:17:47,095
vous rappelez que lorsque vous

200
00:17:47,095 --> 00:17:48,735
vous connectez ici, vous serez connecté ici,

201
00:17:48,735 --> 00:17:51,705
et un appel au passeport authentifier local,

202
00:17:51,705 --> 00:17:53,730
lorsque cela est fait au stade de connexion,

203
00:17:53,730 --> 00:17:56,460
le passeport authentifier local sera

204
00:17:56,460 --> 00:18:00,625
ajoute automatiquement la propriété utilisateur au message de demande.

205
00:18:00,625 --> 00:18:03,415
Donc, il va ajouter req.user, puis,

206
00:18:03,415 --> 00:18:07,265
la session de passeport que nous avons faite ici va automatiquement

207
00:18:07,265 --> 00:18:12,575
sérialiser ces informations utilisateur, puis les stocker dans la session.

208
00:18:12,575 --> 00:18:15,925
Ainsi, et par la suite, chaque fois qu'

209
00:18:15,925 --> 00:18:19,135
une requête entrante vient du côté client

210
00:18:19,135 --> 00:18:22,630
avec le cookie de session déjà en place,

211
00:18:22,630 --> 00:18:29,250
alors cela chargera automatiquement req.user sur la requête entrante.

212
00:18:29,250 --> 00:18:32,735
Donc, c'est ainsi que la session de passeport elle-même est organisée.

213
00:18:32,735 --> 00:18:34,445
Donc, une fois cela fait,

214
00:18:34,445 --> 00:18:40,075
même notre code d'authentification deviendra beaucoup plus simple ici.

215
00:18:40,075 --> 00:18:42,400
Donc, dans le code d'authentification,

216
00:18:42,400 --> 00:18:49,450
nous dirons simplement, si req.user.

217
00:18:49,450 --> 00:18:55,690
Donc, le req.user sera chargé par le middleware de session passeport automatiquement,

218
00:18:55,690 --> 00:18:58,845
et donc nous dirons req.user.

219
00:18:58,845 --> 00:19:03,940
Si ce n'est pas req.user, nous dirons var err, nouvelle erreur,

220
00:19:03,940 --> 00:19:09,495
vous n'êtes pas authentifié, et tous ces messages ici.

221
00:19:09,495 --> 00:19:15,410
Sinon, voir la partie autre est également maintenant simplifiée.

222
00:19:17,280 --> 00:19:20,010
On dira d'autre ensuite.

223
00:19:20,010 --> 00:19:27,335
Donc, votre code d'authentification devient beaucoup plus simple car si req.user n'est pas présent,

224
00:19:27,335 --> 00:19:31,695
cela signifie que l'authentification n'a pas été faite correctement,

225
00:19:31,695 --> 00:19:33,345
c'est pourquoi vous indiquez l'erreur.

226
00:19:33,345 --> 00:19:35,470
Sinon, vous êtes authentifié.

227
00:19:35,470 --> 00:19:37,110
Si req.user est présent,

228
00:19:37,110 --> 00:19:39,900
cela signifie que le passeport a fait l'authentification et que l'

229
00:19:39,900 --> 00:19:42,970
utilisateur req.user est chargé sur le message de demande,

230
00:19:42,970 --> 00:19:46,410
et donc vous pouvez simplement aller plus loin.

231
00:19:46,410 --> 00:19:49,815
Donc, c'est le changement que nous devons faire à app.js.

232
00:19:49,815 --> 00:19:57,775
Sauvegardons tous les changements, puis regardons l'application dans Postman.

233
00:19:57,775 --> 00:20:01,385
Une fois que vous avez enregistré toutes les modifications, redémarrez votre serveur.

234
00:20:01,385 --> 00:20:02,600
Si votre serveur est en cours d'exécution,

235
00:20:02,600 --> 00:20:04,700
arrêtez-le, puis redémarrez votre serveur.

236
00:20:04,700 --> 00:20:07,680
Laissez-moi démarrer mon serveur.

237
00:20:08,160 --> 00:20:10,450
Une fois que le serveur est en service,

238
00:20:10,450 --> 00:20:13,900
allons à Postman et faisons quelques requêtes.

239
00:20:13,900 --> 00:20:17,650
Aller à Postman, laissez-moi maintenant essayer d'enregistrer un nouvel utilisateur

240
00:20:17,650 --> 00:20:22,120
en faisant un post sur les utilisateurs s'inscrivent point de terminaison.

241
00:20:22,120 --> 00:20:28,485
Lorsque l'inscription est publiée,

242
00:20:28,485 --> 00:20:31,850
vous voyez que dans le corps du message de réponse, il dit,

243
00:20:31,850 --> 00:20:35,805
succès vrai, et enregistrement de statut réussi.

244
00:20:35,805 --> 00:20:40,430
Ainsi, l'utilisateur a été enregistré avec succès du côté client.

245
00:20:40,430 --> 00:20:44,870
Donc, maintenant, laissez-moi faire une connexion de l'utilisateur.

246
00:20:44,870 --> 00:20:50,000
Donc, nous allons dire, « Connexion », et toujours fournir

247
00:20:50,000 --> 00:20:55,765
le nom d'utilisateur et le mot de passe dans le corps du message ici.

248
00:20:55,765 --> 00:20:58,345
Donc, quand je clique sur le « Envoyer »,

249
00:20:58,345 --> 00:21:02,550
vous remarquerez immédiatement qu'en bas,

250
00:21:02,550 --> 00:21:05,050
il est dit, succès, true, et état,

251
00:21:05,050 --> 00:21:09,440
vous êtes connecté, puis dans l'en-tête lui-même,

252
00:21:09,440 --> 00:21:13,515
vous verrez un set-cookie venir parce que nous sommes en train de configurer la session,

253
00:21:13,515 --> 00:21:17,390
puis vous voyez le cookie en place là-bas.

254
00:21:17,390 --> 00:21:19,465
Lorsque vous cliquez sur les cookies,

255
00:21:19,465 --> 00:21:23,875
vous voyez l'ID de session en place juste là.

256
00:21:23,875 --> 00:21:26,980
Donc, maintenant, nous sommes connectés avec succès.

257
00:21:26,980 --> 00:21:35,630
Envoyez-nous une requête au point de terminaison Get localhost : 3000 plats.

258
00:21:35,630 --> 00:21:42,210
Vous voyez que votre demande a été acceptée avec succès et qu'une réponse a été envoyée.

259
00:21:42,210 --> 00:21:43,350
Bien sûr, en ce moment,

260
00:21:43,350 --> 00:21:48,330
ma base de données est vide donc c'est pourquoi elle renvoie un tableau vide

261
00:21:48,330 --> 00:21:54,530
du site du serveur lorsque je demande localhost : 3000/plats.

262
00:21:55,050 --> 00:21:58,165
C' est parfaitement bien.

263
00:21:58,165 --> 00:22:00,610
Laissez-moi maintenant déconnecter l'utilisateur.

264
00:22:00,610 --> 00:22:02,995
Donc, quand je déconnecte l'utilisateur, maintenant,

265
00:22:02,995 --> 00:22:10,450
vous remarquerez que l'utilisateur a été déconnecté et lorsque vous cliquez sur les cookies,

266
00:22:10,450 --> 00:22:14,660
vous remarquerez que, ce cookie pour localhost a déjà disparu.

267
00:22:14,660 --> 00:22:19,245
Donc, maintenant, si vous essayez de faire un get sur le localhost:plats,

268
00:22:19,245 --> 00:22:24,910
vous voyez que la réponse dit,

269
00:22:24,910 --> 00:22:26,640
vous n'êtes pas authentifié.

270
00:22:26,640 --> 00:22:32,760
Connectez-vous une fois de plus en faisant un post sur la connexion des utilisateurs,

271
00:22:32,760 --> 00:22:36,290
puis, vous voyez que nous pouvons vous connecter avec succès à ce stade.

272
00:22:36,290 --> 00:22:37,830
Vous remarquez également

273
00:22:37,830 --> 00:22:40,075
que, ce nouveau cookie a été mis en place ici.

274
00:22:40,075 --> 00:22:44,480
Ensuite, si nous faisons un get sur le localhost:plats ici,

275
00:22:44,480 --> 00:22:46,465
maintenant, ce sera un succès.

276
00:22:46,465 --> 00:22:51,624
Puisque nous utilisons passeport-local mongoose comme plugin mongoose,

277
00:22:51,624 --> 00:22:55,790
allons aussi vérifier notre serveur MongoDB pour voir comment les

278
00:22:55,790 --> 00:23:00,410
informations de l'utilisateur sont réellement stockées dans notre MongoDB.

279
00:23:00,410 --> 00:23:04,880
Donc, dans votre terminal,

280
00:23:04,880 --> 00:23:06,970
vous pouvez ouvrir l'ondulation Mongo,

281
00:23:06,970 --> 00:23:11,775
alors disons Mongo au terminal, puis connectez-vous à notre serveur MongoDB,

282
00:23:11,775 --> 00:23:16,500
puis dites utiliser Confusion.

283
00:23:16,500 --> 00:23:26,285
Ensuite, nous allons dire db.users.find () .pretty (), puis imprimer les informations de l'utilisateur.

284
00:23:26,285 --> 00:23:31,180
Ainsi, lorsque vous imprimez les informations de l'utilisateur comme vous le voyez ici,

285
00:23:31,180 --> 00:23:35,235
il y a un utilisateur que nous avons enregistré plus tôt.

286
00:23:35,235 --> 00:23:40,840
Donc, vous verrez que l'enregistrement de l'utilisateur contient l'ID de l'objet, puis,

287
00:23:40,840 --> 00:23:42,665
le nom d'utilisateur ci-dessous,

288
00:23:42,665 --> 00:23:46,060
et le drapeau admin qui est faux, puis,

289
00:23:46,060 --> 00:23:53,720
remarquez également qu'au lieu de stocker le mot de passe lui-même ce que le

290
00:23:53,720 --> 00:23:57,515
plugin mongoose Mongos passeport-local fait est qu'il stocke

291
00:23:57,515 --> 00:24:01,865
sa valeur de sel ici et une valeur de hachage ici.

292
00:24:01,865 --> 00:24:08,655
Maintenant, ce que fait le plugin de Mongo est qu'il utilisera le sel comme un moyen de

293
00:24:08,655 --> 00:24:15,990
crypter le mot de passe et installer le mot de passe haché dans ce champ de hachage ici.

294
00:24:15,990 --> 00:24:17,980
Donc, lorsque vous essayez de vous connecter,

295
00:24:17,980 --> 00:24:23,130
il appliquera la même transformation au mot de passe entrant,

296
00:24:23,130 --> 00:24:27,330
puis essayez de le faire correspondre avec cette valeur de hachage qui est stockée ici.

297
00:24:27,330 --> 00:24:29,580
Ainsi, vous pouvez voir que dans la base de données elle-même,

298
00:24:29,580 --> 00:24:32,855
le mot de passe n'est pas directement stocké dans

299
00:24:32,855 --> 00:24:38,280
la valeur hachée du mot de passe qui est haché en utilisant cette clé sel ici,

300
00:24:38,280 --> 00:24:39,435
que nous voyons ici,

301
00:24:39,435 --> 00:24:42,780
est stocké dans l'enregistrement là.

302
00:24:42,780 --> 00:24:47,440
Donc, c'est ainsi que le plugin Mongoose local passeport-nous permet de

303
00:24:47,440 --> 00:24:53,905
stocker les informations de l'utilisateur dans notre base de données.

304
00:24:53,905 --> 00:24:58,680
Avec cette compréhension rapide de la façon dont passeport, passeport-local

305
00:24:58,680 --> 00:25:02,590
et passeport-local-mongoose nous aident à simplifier

306
00:25:02,590 --> 00:25:09,390
la stratégie locale pour le nom d'utilisateur et le mot de passe dans notre application.

307
00:25:09,390 --> 00:25:11,660
Nous terminons cet exercice.

308
00:25:11,660 --> 00:25:18,390
C' est le bon moment pour vous de faire un commit Git avec le passeport de message.