1
00:00:03,950 --> 00:00:09,180
Jetzt, da wir verstanden haben, Pass und wie Passport fügt

2
00:00:09,180 --> 00:00:14,294
in eine einfache Authentifizierung Middleware für unsere NodeJS-Anwendung,

3
00:00:14,294 --> 00:00:18,435
und bietet eine flexible, einfach zu konfigurieren

4
00:00:18,435 --> 00:00:22,935
Weg und bietet verschiedene Strategien für die Benutzerauthentifizierung,

5
00:00:22,935 --> 00:00:27,850
lassen Sie uns auf eine Reise mit unserem Pass gehen.

6
00:00:27,890 --> 00:00:31,020
Um mit dieser Übung zu beginnen,

7
00:00:31,020 --> 00:00:33,945
als der erste Schritt lassen Sie uns Passport,

8
00:00:33,945 --> 00:00:40,135
Passport-lokale und Passport-local-Mungo Knoten Module in unserem Verwirrungsserver installieren.

9
00:00:40,135 --> 00:00:44,030
Also geben Sie an der Eingabeaufforderung npm instal_passport,

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

11
00:00:49,820 --> 00:00:59,430
pass-local-mongoose mnus minus speichern und installieren Sie diese drei module.

12
00:00:59,430 --> 00:01:05,980
Wie Sie im Moment sehen können, beginnen wir mit Pass 0.4.0,

13
00:01:05,980 --> 00:01:15,004
Pass-local 1.0.0 und Pass-local-Mungo 5.0.1 Versionen in diesem Kurs.

14
00:01:15,004 --> 00:01:20,110
Jetzt, da wir Passport, Reisepass-lokale und Pass-Lokal-Mungo installiert haben,

15
00:01:20,110 --> 00:01:25,640
gehen wir zum Verwirrungsserver und gehen Sie zur Datei user.js.

16
00:01:25,640 --> 00:01:31,325
Wir werden das Benutzerschema und das Modell aktualisieren, um den Pass-local-Mungo zu verwenden.

17
00:01:31,325 --> 00:01:33,735
Um dies zu tun, werden wir hier sagen,

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

19
00:01:41,060 --> 00:01:45,390
benötigen Pass-local-Mungo.

20
00:01:46,190 --> 00:01:50,330
Dies werden wir also als

21
00:01:50,330 --> 00:01:56,780
Mungo Plugin in unserer Anwendung installieren und wir können den Benutzernamen und

22
00:01:56,780 --> 00:02:00,440
das Passwort entfernen, da diese automatisch vom

23
00:02:00,440 --> 00:02:04,535
Pass-Lokal-Mungo Plugin hier hinzugefügt werden und

24
00:02:04,535 --> 00:02:12,980
das als Plugin in unserem Mungo Schema und Modell zu verwenden.

25
00:02:12,980 --> 00:02:20,160
Wir werden sagen, Benutzer Plug in und Pass-Lokal-Mungo.

26
00:02:20,160 --> 00:02:23,360
Also, dies wird automatisch, wie ich sagte, Unterstützung für

27
00:02:23,360 --> 00:02:28,040
Benutzernamen und Hash-Speicherung des Passworts mit

28
00:02:28,040 --> 00:02:33,305
dem Hash und Salz hinzufügen und

29
00:02:33,305 --> 00:02:37,235
zusätzliche Methoden für das Benutzerschema

30
00:02:37,235 --> 00:02:40,880
und das Modell hinzufügen, die für die Passauthentifizierung nützlich sind.

31
00:02:40,880 --> 00:02:48,390
Sobald wir die Aktualisierung der Datei user.js abgeschlossen haben, dann in unserem Projektordner,

32
00:02:48,390 --> 00:02:57,800
erstellen wir eine neue Datei und benennen sie als authenticate.js.

33
00:02:57,800 --> 00:03:03,420
Lassen Sie mich in der Datei authentic.js den Reisepass importieren.

34
00:03:03,940 --> 00:03:10,700
Wir werden also sagen, dass Reisepass erforderlich ist und wir werden

35
00:03:10,700 --> 00:03:16,700
diese Datei verwenden, um die Authentifizierungsstrategien zu speichern, die wir konfigurieren werden.

36
00:03:16,700 --> 00:03:26,195
Also sagen wir var. LocalStrategy erfordert pass-local,

37
00:03:26,195 --> 00:03:36,140
so dass das Passport-lokale Modul exportiert eine Strategie, die wir für unsere Anwendung verwenden können.

38
00:03:36,140 --> 00:03:39,800
Also sagen wir Passport-local.Strategy

39
00:03:39,800 --> 00:03:56,700
und dann werden wir Benutzer von Modellen Benutzer importieren.

40
00:03:58,550 --> 00:04:06,270
Lassen Sie uns nun den Pass mit der neuen lokalen Strategie konfigurieren

41
00:04:06,270 --> 00:04:13,970
und dann werden wir diese aus dieser Datei exportieren, da dies ein Knotenmodul sein wird.

42
00:04:13,970 --> 00:04:23,940
Also sagen wir exports.local und wir werden Pass sagen und Sie

43
00:04:23,940 --> 00:04:28,580
können sehen, dass der Pass die verschiedenen Methoden

44
00:04:28,580 --> 00:04:33,710
hier unterstützt, so dass wir sagen, Pass-Verwendung und sagen

45
00:04:33,710 --> 00:04:39,125
neue LocalStrategy und dann ist dies, wo

46
00:04:39,125 --> 00:04:47,715
die Funktionen, die von der Pass-lokalen Mungo unterstützt werden, zu unserer Hilfe kommen.

47
00:04:47,715 --> 00:04:52,225
Daher muss die lokale Strategie mit der Verifizierungsfunktion geliefert werden.

48
00:04:52,225 --> 00:04:55,210
Innerhalb dieser Funktion werden wir den Benutzer überprüfen.

49
00:04:55,210 --> 00:04:59,090
Diese Verifizierungsfunktion wird mit dem Benutzernamen und dem Passwort aufgerufen, das der

50
00:04:59,090 --> 00:05:03,380
Reisepass aus unserer eingehenden Anfrage extrahiert.

51
00:05:03,380 --> 00:05:09,620
Nun

52
00:05:09,620 --> 00:05:16,800
sollten in der eingehenden Anfrage für die LocalStrategy der Benutzername und das Passwort im Textkörper der Nachricht in Form einer Json-Zeichenfolge angegeben werden.

53
00:05:17,680 --> 00:05:21,560
Wieder, weil wir Bodyy-Parser tun, so dass wird

54
00:05:21,560 --> 00:05:24,500
in den Körper der Nachricht und dann von dort Pass hinzugefügt

55
00:05:24,500 --> 00:05:29,000
werden wir abrufen, dass und dann verwenden, dass und geben Sie den Benutzernamen und das Passwort

56
00:05:29,000 --> 00:05:34,775
als Parameter für die Verifizierungsfunktion, die wir an die LocalStrategy liefern.

57
00:05:34,775 --> 00:05:37,565
Da wir Passport-Mungo Plugin verwenden,

58
00:05:37,565 --> 00:05:44,915
fügt das Mungo Plugin selbst diese Funktion namens user.authenticate hinzu.

59
00:05:44,915 --> 00:05:51,495
Daher fügt es diese Methode dem Benutzerschema und dem Modell hinzu.

60
00:05:51,495 --> 00:05:55,775
Wir werden das als die Funktion liefern, die die

61
00:05:55,775 --> 00:06:00,350
Authentifizierung für die LocalStrategy zur Verfügung stellt.

62
00:06:00,350 --> 00:06:02,540
Wenn Sie nun keinen

63
00:06:02,540 --> 00:06:06,875
Passport-local-Mungo verwenden, wenn Sie ein Mungo Plugin einrichten, das wir getan haben,

64
00:06:06,875 --> 00:06:08,060
wenn Sie das nicht verwenden,

65
00:06:08,060 --> 00:06:12,540
dann müssen Sie hier Ihre eigene Benutzerauthentifizierungsfunktion schreiben.

66
00:06:12,540 --> 00:06:15,720
In der Vorlesung zuvor

67
00:06:15,720 --> 00:06:18,860
hatte ich Ihnen eine einfache Benutzerauthentifizierungsfunktion gezeigt

68
00:06:18,860 --> 00:06:22,580
, die hier verwendet werden kann, aber die,

69
00:06:22,580 --> 00:06:25,610
die vom Passport-local-mongoose-Modul geliefert wird

70
00:06:25,610 --> 00:06:30,200
, ist umfassender und so werden wir in unserer Anwendung verwenden.

71
00:06:30,200 --> 00:06:36,365
Da wir immer noch Sitzungen verwenden, um Benutzer in unserer Anwendung

72
00:06:36,365 --> 00:06:43,775
zu verfolgen, müssen wir den Benutzer serialisieren und deserialisieren.

73
00:06:43,775 --> 00:06:47,345
Dies nimmt also im Grunde die Benutzerinformationen.

74
00:06:47,345 --> 00:06:54,815
Nun erinnern Sie sich, dass die Passauthentifizierung wird die req.user oder die Benutzereigenschaft auf

75
00:06:54,815 --> 00:06:58,715
die Anforderungsnachricht einhängen und so

76
00:06:58,715 --> 00:07:04,610
, dass Benutzerinformationen serialisiert und deserialisiert werden realisiert mit

77
00:07:04,610 --> 00:07:17,295
diesem Sprichwort serialisieren Benutzer und Reisepass deserialisieren Benutzer.

78
00:07:17,295 --> 00:07:22,235
Auch werden wir sagen, Benutzer deserialisieren Benutzer.

79
00:07:22,235 --> 00:07:27,920
Diese beiden Funktionen, die sie serialisieren Benutzer und deserialisieren Benutzer werden auf

80
00:07:27,920 --> 00:07:35,030
dem Benutzerschema und Modell durch die Verwendung des Pass-local-Mongoose Plugin hier zur Verfügung gestellt.

81
00:07:35,030 --> 00:07:38,240
So wird dies kümmern, was auch immer es für

82
00:07:38,240 --> 00:07:42,860
unsere Unterstützung für Sitzungen im Pass erforderlich ist.

83
00:07:42,860 --> 00:07:48,375
Sobald wir diese Aktualisierung der Datei authenticate.js abgeschlossen haben,

84
00:07:48,375 --> 00:07:54,200
wird diese Datei benötigt, wo immer sie für uns benötigt wird, um in unserer Authentifizierung zu verwenden.

85
00:07:54,200 --> 00:07:59,795
Als nächstes werden

86
00:07:59,795 --> 00:08:04,170
wir in der Datei users.js in der Datei users.js zuerst den Reisepass importieren.

87
00:08:04,170 --> 00:08:09,525
Also werden wir sagen, var Pass erfordern Pass.

88
00:08:09,525 --> 00:08:16,100
Dann, weil wir das Passport-lokale Mungo Plugin verwenden,

89
00:08:16,100 --> 00:08:20,525
liefert das Mungo Plugin selbst einige Metriken, die

90
00:08:20,525 --> 00:08:25,380
für uns nützlich sind, um im Anmeldeprozess und im Anmeldeprozess zu verwenden.

91
00:08:25,380 --> 00:08:29,030
Also gehen Sie zum Router-Post hier,

92
00:08:29,030 --> 00:08:34,120
das Mungo Plugin bietet uns mit einer Methode namens Register,

93
00:08:34,120 --> 00:08:37,275
auf dem Benutzerschema und Modell.

94
00:08:37,275 --> 00:08:44,460
Also werden wir sagen, Benutzer registrieren und dies wird in sagen neuen Benutzer umgewandelt werden.

95
00:08:44,460 --> 00:08:51,035
Dieser neue Benutzer ist der erste Parameter, den das Register übernimmt

96
00:08:51,035 --> 00:08:58,245
und der zweite Parameter ist das req body Passwort.

97
00:08:58,245 --> 00:09:05,440
Also das Passwort, das als zweiter Parameter im Hauptteil der Nachricht kommt.

98
00:09:05,440 --> 00:09:08,460
Erinnern Sie sich also daran, dass der Benutzername und das Passwort übergeben werden,

99
00:09:08,460 --> 00:09:12,020
wenn Sie sich im Nachrichtentext anmelden.

100
00:09:12,020 --> 00:09:14,255
Nun, in diesem Fall

101
00:09:14,255 --> 00:09:19,855
wird dies zu einer Callback-Funktion führen, die Fehler

102
00:09:19,855 --> 00:09:25,825
und den Benutzer als die beiden Callback-Werte hier liefert und leider

103
00:09:25,825 --> 00:09:28,790
funktioniert das dann in diesem Fall nicht.

104
00:09:28,790 --> 00:09:33,045
Also muss ich das von hier aus ausschneiden und dann

105
00:09:33,045 --> 00:09:39,415
das in dieser Callback-Methode hier behandeln.

106
00:09:39,415 --> 00:09:43,820
Also, lassen Sie mich das einfach einrücken,

107
00:09:43,820 --> 00:09:48,060
damit es einfacher ist, den Code hier zu sehen.

108
00:09:48,060 --> 00:09:51,830
Also werde ich sagen, Benutzerregistrierung und der erste Parameter ist

109
00:09:51,830 --> 00:09:53,630
ein neuer Benutzer,

110
00:09:53,630 --> 00:09:57,590
der mit dem Benutzernamen hier erstellt wurde und der zweite Parameter ist das Passwort,

111
00:09:57,590 --> 00:10:02,550
und dann ist das Ergebnis diese Callback-Funktion, die aufruft,

112
00:10:02,550 --> 00:10:06,100
wir sagen Fehler Benutzer hier.

113
00:10:06,100 --> 00:10:11,260
In diesem Fall müssen wir den Code hier ein wenig bearbeiten.

114
00:10:11,260 --> 00:10:14,620
Also im ersten Teil

115
00:10:14,620 --> 00:10:21,850
werden wir sagen, wenn Fehler,

116
00:10:21,850 --> 00:10:28,150
dann müssen sie die Antwort explizit zurücksenden.

117
00:10:28,150 --> 00:10:34,945
Also, ich werde diese beiden hier kopieren.

118
00:10:34,945 --> 00:10:37,670
Also werden wir sagen, wenn Fehler,

119
00:10:37,740 --> 00:10:40,860
dann Res-Status-Code,

120
00:10:40,860 --> 00:10:46,970
wir werden dies auf 500 setzen und Header-Inhaltstyp

121
00:10:46,970 --> 00:10:52,520
setzen und dann, wir werden res json und dann Fehler, Fehler setzen.

122
00:10:52,520 --> 00:10:56,790
Also werden wir ein JSON-Objekt mit dem Fehler als

123
00:10:56,790 --> 00:11:01,590
Wert für die Fehlereigenschaft dort konstruieren und dann zurücksenden.

124
00:11:01,590 --> 00:11:06,145
So würden Sie den Fehler in diesem Fall behandeln.

125
00:11:06,145 --> 00:11:11,110
Andernfalls, was wir hier tun, ist, dass wir

126
00:11:11,110 --> 00:11:18,970
sagen, Pass authentifizieren lokale.

127
00:11:18,970 --> 00:11:23,810
Also, wenn wir gehen, um Pass verwenden, um den Benutzer wieder zu authentifizieren.

128
00:11:23,810 --> 00:11:25,930
Also sagen wir, Reisepass authentifizieren lokal.

129
00:11:25,930 --> 00:11:28,820
Um sicherzustellen, dass die Benutzerregistrierung erfolgreich war.

130
00:11:28,820 --> 00:11:33,145
Wir werden versuchen, den gleichen Benutzer zu authentifizieren, den wir gerade registriert haben, und

131
00:11:33,145 --> 00:11:38,335
hier werden wir sagen, req res und dies

132
00:11:38,335 --> 00:11:48,355
wird als dritter Wert die Funktion zurückgeben, in der

133
00:11:48,355 --> 00:11:52,300
wir die Antwort an unseren Kunden zurücksenden werden.

134
00:11:52,300 --> 00:12:01,140
Also werden wir sagen. Lassen Sie mich das entfernen und fügen Sie es hier hinzu.

135
00:12:01,140 --> 00:12:03,190
Das können wir nun entfernen,

136
00:12:03,190 --> 00:12:11,070
denn dies ist dann für uns nicht notwendig und dies ist das Schließen der Benutzerregistrierung.

137
00:12:11,070 --> 00:12:12,990
Im anderen Teil

138
00:12:12,990 --> 00:12:16,810
werden wir tun Reisepass authentifizieren lokalen.

139
00:12:16,970 --> 00:12:19,510
Sehen Sie sich die Syntax hier an.

140
00:12:19,510 --> 00:12:23,425
Also das ist Passauthentifizierung lokal und dann im Anschluss daran

141
00:12:23,425 --> 00:12:29,325
müssen wir diese Funktion hier aufrufen, dass die Parameter req,

142
00:12:29,325 --> 00:12:35,245
res und dass der dritte eine Callback-Funktion hier ist.

143
00:12:35,245 --> 00:12:42,275
Dies ist also die Art und Weise, wie dies umgesetzt wird, weil der Pass erwartet, dass Sie es auf diese Weise tun.

144
00:12:42,275 --> 00:12:46,495
In hier setzen wir req res Statuscode ist 200,

145
00:12:46,495 --> 00:12:49,930
setzen Header Inhalt Anwendung json und dann werden wir

146
00:12:49,930 --> 00:12:59,410
res json Status Registrierung erfolgreich und wir werden den Benutzerwert hier nicht übergeben.

147
00:12:59,410 --> 00:13:03,240
Stattdessen werde ich

148
00:13:03,240 --> 00:13:10,695
hier eine Flagge namens Erfolg setzen.

149
00:13:10,695 --> 00:13:15,620
Auf diese Weise

150
00:13:15,620 --> 00:13:20,550
kann der Client auf unserer Client-Seite, wenn dieser JSON empfangen wird, einfach die Erfolgseigenschaft extrahieren und dann überprüfen, ob es wahr ist

151
00:13:20,550 --> 00:13:25,695
oder nicht, um schnell zu überprüfen, ob die Registrierung erfolgreich war oder nicht.

152
00:13:25,695 --> 00:13:32,000
So werden wir hier mit dem Benutzerregistrierungsprozess umgehen.

153
00:13:32,000 --> 00:13:35,470
Beachten Sie also, wie der Code erheblich vereinfacht wurde.

154
00:13:35,470 --> 00:13:38,924
Wenn sich der Benutzer nicht richtig registriert hat,

155
00:13:38,924 --> 00:13:45,665
sendet dies einen Fehler entsprechend zurück und auch die Authentifizierung schlägt fehl.

156
00:13:45,665 --> 00:13:51,115
Daher werden Sie in beiden Fällen die Situation erfassen, wenn die Benutzerauthentifizierung fehlschlägt.

157
00:13:51,115 --> 00:13:56,270
Nun wird auch der Anmeldeprozess selbst deutlich vereinfacht.

158
00:13:56,270 --> 00:14:01,650
Also, wir müssen das nicht alles in der Login-Route hier tun.

159
00:14:01,650 --> 00:14:07,220
Also werde ich all diesen Code entfernen und diese Login-Route wird hier vereinfacht.

160
00:14:07,220 --> 00:14:14,365
Jetzt für die Login-Route- für den Router-Post, wenn wir es hier tun,

161
00:14:14,365 --> 00:14:19,150
auch hier erwarten wir, dass der Benutzername und das Passwort

162
00:14:19,150 --> 00:14:24,240
in den Körper der Post Nachricht aufgenommen werden, die sie kommt.

163
00:14:24,240 --> 00:14:32,030
Im Gegensatz zu dem früheren Fall, in dem wir dies in den Autorisierungs-Header aufgenommen haben,

164
00:14:32,030 --> 00:14:37,865
erwarten wir hier, dass dies im Hauptteil der eingehenden Postnachricht enthalten ist.

165
00:14:37,865 --> 00:14:47,730
Um sich zu authentifizieren, sagen wir einfach Pass authentifizieren und wir sagen hier lokal.

166
00:14:47,730 --> 00:14:52,320
Das wird also der zweite Anruf hier sein.

167
00:14:52,320 --> 00:14:55,360
Das ist also die zweite Middleware hier, die wir schneiden werden.

168
00:14:55,360 --> 00:15:01,690
Wenn also der Routerpost auf dem Anmeldeendpunkt kommt,

169
00:15:01,690 --> 00:15:06,095
rufen wir zuerst den Reisepass authentifizieren lokal.

170
00:15:06,095 --> 00:15:09,660
Wenn dies erfolgreich ist, wird dies

171
00:15:09,660 --> 00:15:13,485
eintreten und die nächste Funktion, die folgt, wird ausgeführt.

172
00:15:13,485 --> 00:15:18,850
Wenn es einen Fehler in der Authentifizierung gibt,

173
00:15:18,850 --> 00:15:24,210
sendet dieser Reisepass authentifizieren lokale automatisch eine Antwort an den Client über den Fehler der Authentifizierung zurück.

174
00:15:24,210 --> 00:15:26,190
Das ist also schon gesorgt.

175
00:15:26,190 --> 00:15:33,345
Beachten Sie also, wie der Code im Anmeldeprozess erheblich vereinfacht wird.

176
00:15:33,345 --> 00:15:36,565
Also, wenn das erfolgreich durchläuft,

177
00:15:36,565 --> 00:15:42,775
muss ich nur nach den req und res suchen und hier drin, was ich tun werde,

178
00:15:42,775 --> 00:15:49,665
ist, dass ich einfach eine Nachricht an die Client-Seite mit diesen Informationen hier senden werde.

179
00:15:49,665 --> 00:15:53,775
Wir sagen res Statuscode 200,

180
00:15:53,775 --> 00:16:02,145
res set Header Inhaltstyp Anwendung json und res json Erfolg true status.

181
00:16:02,145 --> 00:16:13,010
Wir sagen, Sie sind erfolgreich eingeloggt.

182
00:16:13,010 --> 00:16:18,100
Das war's. Dies ist die Änderung, die wir an der Datei users.js vornehmen werden.

183
00:16:18,100 --> 00:16:24,655
Beachten Sie also, dass der

184
00:16:24,655 --> 00:16:28,205
Code aufgrund des Benutzerpasses sowohl des Anmeldeprozesses als auch des Anmeldeprozesses in diesem Fall erheblich vereinfacht wurde.

185
00:16:28,205 --> 00:16:34,465
Jetzt werden wir fortfahren, um app.js Datei zu aktualisieren gehen auf app.js jetzt.

186
00:16:34,465 --> 00:16:37,555
In app.js rechts hier oben

187
00:16:37,555 --> 00:16:50,540
werden wir Pass eingeben.

188
00:16:51,270 --> 00:16:55,310
Dann werden wir

189
00:16:59,820 --> 00:17:07,120
das Authentifizierungsmodul importieren, das wir gerade implementiert haben.

190
00:17:07,120 --> 00:17:15,390
Wir werden sagen, var authenticate und in der app.js Datei unten unten hier nach der Sitzung

191
00:17:15,390 --> 00:17:25,320
fügen wir app.use (passport.initialize)

192
00:17:25,320 --> 00:17:32,100
und app.use (.session) hinzu.

193
00:17:32,950 --> 00:17:37,810
Wenn der Benutzer angemeldet ist,

194
00:17:37,810 --> 00:17:42,945
dann was passiert, ist, dass, wenn die Sitzung erneut initiiert wird,

195
00:17:42,945 --> 00:17:47,095
Sie daran erinnern, dass, wenn Sie sich hier anmelden,

196
00:17:47,095 --> 00:17:48,735
werden Sie sich hier anmelden,

197
00:17:48,735 --> 00:17:51,705
und ein Anruf an den Reisepass authentifizieren lokale,

198
00:17:51,705 --> 00:17:53,730
wenn dies in der Anmeldephase getan wird,

199
00:17:53,730 --> 00:17:56,460
wird der Reisepass authentifizieren lokale

200
00:17:56,460 --> 00:18:00,625
automatisch die Benutzereigenschaft zur Anforderungsnachricht hinzufügen.

201
00:18:00,625 --> 00:18:03,415
Es wird also req.user hinzugefügt und dann

202
00:18:03,415 --> 00:18:07,265
wird die Passsitzung, die wir hier gemacht haben, automatisch

203
00:18:07,265 --> 00:18:12,575
diese Benutzerinformationen serialisieren und dann in der Sitzung speichern.

204
00:18:12,575 --> 00:18:15,925
Wenn also

205
00:18:15,925 --> 00:18:19,135
eine eingehende Anfrage von der Clientseite

206
00:18:19,135 --> 00:18:22,630
mit dem Sitzungs-Cookie bereits vorhanden ist,

207
00:18:22,630 --> 00:18:29,250
lädt dies automatisch den req.user auf die eingehende Anfrage.

208
00:18:29,250 --> 00:18:32,735
So wird die Passsitzung selbst organisiert.

209
00:18:32,735 --> 00:18:34,445
Sobald dies geschehen ist,

210
00:18:34,445 --> 00:18:40,075
wird auch unser Authentifizierungscode hier viel einfacher.

211
00:18:40,075 --> 00:18:42,400
Also, im Authentifizierungscode,

212
00:18:42,400 --> 00:18:49,450
werden wir einfach sagen, wenn req.user.

213
00:18:49,450 --> 00:18:55,690
So wird der req.user automatisch von der Passsitzung Middleware geladen,

214
00:18:55,690 --> 00:18:58,845
und so sagen wir req.user.

215
00:18:58,845 --> 00:19:03,940
Wenn nicht req.user sagen wir var err, neuer Fehler,

216
00:19:03,940 --> 00:19:09,495
Sie sind nicht authentifiziert, und alle diese Nachrichten hier.

217
00:19:09,495 --> 00:19:15,410
Andernfalls wird der else Teil jetzt auch vereinfacht.

218
00:19:17,280 --> 00:19:20,010
Als Nächstes sagen wir noch etwas.

219
00:19:20,010 --> 00:19:27,335
Ihr Authentifizierungscode wird also viel einfacher, denn wenn req.user nicht vorhanden ist,

220
00:19:27,335 --> 00:19:31,695
bedeutet dies, dass die Authentifizierung nicht korrekt durchgeführt wurde,

221
00:19:31,695 --> 00:19:33,345
deshalb geben Sie den Fehler an.

222
00:19:33,345 --> 00:19:35,470
Andernfalls werden Sie authentifiziert.

223
00:19:35,470 --> 00:19:37,110
Wenn req.user vorhanden ist,

224
00:19:37,110 --> 00:19:39,900
bedeutet das, dass der Reisepass die Authentifizierung durchgeführt hat und der Benutzer

225
00:19:39,900 --> 00:19:42,970
req.user in die Anforderungsnachricht geladen wird,

226
00:19:42,970 --> 00:19:46,410
und so können Sie einfach weiter unten gehen.

227
00:19:46,410 --> 00:19:49,815
Also, das ist die Änderung, die wir an app.js vornehmen müssen.

228
00:19:49,815 --> 00:19:57,775
Lassen Sie uns alle Änderungen speichern und dann die Anwendung in Postman betrachten.

229
00:19:57,775 --> 00:20:01,385
Sobald Sie alle Änderungen gespeichert haben, starten Sie den Server neu.

230
00:20:01,385 --> 00:20:02,600
Wenn der Server ausgeführt wird,

231
00:20:02,600 --> 00:20:04,700
beenden Sie ihn, und starten Sie den Server neu.

232
00:20:04,700 --> 00:20:07,680
Lassen Sie mich meinen Server starten.

233
00:20:08,160 --> 00:20:10,450
Sobald der Server betriebsbereit ist,

234
00:20:10,450 --> 00:20:13,900
gehen wir zu Postman und machen ein paar Anfragen.

235
00:20:13,900 --> 00:20:17,650
Gehen Sie zu Postman, lassen Sie mich jetzt versuchen, einen neuen Benutzer zu registrieren,

236
00:20:17,650 --> 00:20:22,120
indem Sie einen Beitrag auf dem Benutzerregistrierungsendpunkt tun.

237
00:20:22,120 --> 00:20:28,485
Wenn die Registrierung veröffentlicht wird,

238
00:20:28,485 --> 00:20:31,850
sehen Sie, dass im Textkörper der Antwortnachricht „

239
00:20:31,850 --> 00:20:35,805
Erfolg wahr“ und die Statusregistrierung erfolgreich ist.

240
00:20:35,805 --> 00:20:40,430
So wurde der Benutzer erfolgreich auf der Client-Seite registriert.

241
00:20:40,430 --> 00:20:44,870
Also, jetzt, lassen Sie mich einen Login des Benutzers machen.

242
00:20:44,870 --> 00:20:50,000
Also, wir werden sagen, „Login“, und immer noch geben

243
00:20:50,000 --> 00:20:55,765
Sie den Benutzernamen und das Passwort im Textkörper der Nachricht hier.

244
00:20:55,765 --> 00:20:58,345
Also, wenn ich auf „Senden“ klicke,

245
00:20:58,345 --> 00:21:02,550
werden Sie sofort bemerken, dass unten,

246
00:21:02,550 --> 00:21:05,050
es heißt, Erfolg, wahr und Status,

247
00:21:05,050 --> 00:21:09,440
Sie sind angemeldet und dann in der Kopfzeile selbst,

248
00:21:09,440 --> 00:21:13,515
würden Sie sehen, ein Set-Cookie kommen, weil wir die Sitzung einrichten,

249
00:21:13,515 --> 00:21:17,390
und dann sehen Sie das Cookie an Ort und Stelle dort.

250
00:21:17,390 --> 00:21:19,465
Wenn Sie auf die Cookies klicken,

251
00:21:19,465 --> 00:21:23,875
sehen Sie die Sitzungs-ID direkt dort.

252
00:21:23,875 --> 00:21:26,980
Also, jetzt sind wir erfolgreich eingeloggt.

253
00:21:26,980 --> 00:21:35,630
Lassen Sie uns eine Anfrage an den Get localhost: 3000 Gerichte Endpunkt senden.

254
00:21:35,630 --> 00:21:42,210
Sie sehen, dass Ihre Anfrage erfolgreich eingegangen ist und dann eine Antwort gesendet wurde.

255
00:21:42,210 --> 00:21:43,350
Natürlich

256
00:21:43,350 --> 00:21:48,330
ist meine Datenbank in diesem Moment leer, deshalb sendet sie ein leeres Array

257
00:21:48,330 --> 00:21:54,530
von der Server-Site zurück, wenn ich nach localhost frage: 3000/Gerichte.

258
00:21:55,050 --> 00:21:58,165
Das ist vollkommen in Ordnung.

259
00:21:58,165 --> 00:22:00,610
Lassen Sie mich jetzt den Benutzer abmelden.

260
00:22:00,610 --> 00:22:02,995
Also, wenn ich den Benutzer abmelde, jetzt,

261
00:22:02,995 --> 00:22:10,450
werden Sie feststellen, dass der Benutzer abgemeldet wurde und wenn Sie auf die Cookies klicken,

262
00:22:10,450 --> 00:22:14,660
werden Sie feststellen, dass, dass das Cookie für localhost bereits verschwunden ist.

263
00:22:14,660 --> 00:22:19,245
Also, jetzt, wenn Sie versuchen, ein get auf dem localhost zu tun: Gerichte,

264
00:22:19,245 --> 00:22:24,910
Sie sehen, dass die Antwort sagt,

265
00:22:24,910 --> 00:22:26,640
Sie sind nicht authentifiziert.

266
00:22:26,640 --> 00:22:32,760
Lassen Sie uns noch einmal anmelden, indem Sie einen Beitrag auf der Benutzeranmeldung machen,

267
00:22:32,760 --> 00:22:36,290
und dann sehen Sie, dass wir sich an dieser Stelle erfolgreich anmelden können.

268
00:22:36,290 --> 00:22:37,830
Sie bemerken auch,

269
00:22:37,830 --> 00:22:40,075
dass, das neue Cookie wurde hier eingerichtet.

270
00:22:40,075 --> 00:22:44,480
Dann, wenn wir ein get auf der localhost: Gerichte hier,

271
00:22:44,480 --> 00:22:46,465
jetzt, wird dies erfolgreich sein.

272
00:22:46,465 --> 00:22:51,624
Da wir passport-lokale Mungo als Mungo Plugin verwenden,

273
00:22:51,624 --> 00:22:55,790
lassen Sie uns auch gehen und unseren MongoDB-Server überprüfen, um zu sehen, wie

274
00:22:55,790 --> 00:23:00,410
die Informationen des Benutzers tatsächlich in unserer MongoDB gespeichert werden.

275
00:23:00,410 --> 00:23:04,880
Also, in Ihrem Terminal,

276
00:23:04,880 --> 00:23:06,970
können Sie die Mongo-Welligkeit öffnen,

277
00:23:06,970 --> 00:23:11,775
also sagen wir Mongo am Terminal und dann eine Verbindung zu unserem MongoDB-Server,

278
00:23:11,775 --> 00:23:16,500
und dann sagen, verwenden Sie ConFusion.

279
00:23:16,500 --> 00:23:26,285
Dann sagen wir db.users.find () .pretty () und drucken Sie dann die Informationen des Benutzers aus.

280
00:23:26,285 --> 00:23:31,180
Wenn Sie also die Informationen des Benutzers ausdrucken, wie Sie hier sehen,

281
00:23:31,180 --> 00:23:35,235
gibt es einen Benutzer, den wir früher registriert haben.

282
00:23:35,235 --> 00:23:40,840
Sie werden also sehen, dass der Datensatz des Benutzers die Objekt-ID enthält und dann

283
00:23:40,840 --> 00:23:42,665
den Benutzernamen unten hier

284
00:23:42,665 --> 00:23:46,060
und das Admin-Flag, das falsch ist und dann

285
00:23:46,060 --> 00:23:53,720
auch bemerken, dass statt das Passwort selbst zu speichern, was das Mongos

286
00:23:53,720 --> 00:23:57,515
passport-local mongoose Plugin tut, es

287
00:23:57,515 --> 00:24:01,865
seinen Salzwert speichert hier und einen Hash-Wert hier.

288
00:24:01,865 --> 00:24:08,655
Nun, was Mongos Plugin tut, ist, dass es das Salz als eine Möglichkeit verwendet,

289
00:24:08,655 --> 00:24:15,990
das Passwort zu verschlüsseln und das Hash-Passwort in diesem Hashfeld hier zu installieren.

290
00:24:15,990 --> 00:24:17,980
Also, wenn Sie versuchen, sich anzumelden,

291
00:24:17,980 --> 00:24:23,130
wird es die gleiche Transformation auf das eingehende Passwort anwenden

292
00:24:23,130 --> 00:24:27,330
und dann versuchen, es mit diesem Hash-Wert, der hier gespeichert ist, abzugleichen.

293
00:24:27,330 --> 00:24:29,580
So können Sie sehen, dass in der Datenbank selbst,

294
00:24:29,580 --> 00:24:32,855
das Passwort nicht direkt in

295
00:24:32,855 --> 00:24:38,280
dem Hash-Wert des Passworts gespeichert wird, das mit diesem Salzschlüssel gehasht wird

296
00:24:38,280 --> 00:24:39,435
, den wir hier sehen,

297
00:24:39,435 --> 00:24:42,780
in dem Datensatz dort gespeichert ist.

298
00:24:42,780 --> 00:24:47,440
So ermöglicht es uns das Pass-lokale Mongoose-Plugin,

299
00:24:47,440 --> 00:24:53,905
die Benutzerinformationen in unserer Datenbank zu speichern.

300
00:24:53,905 --> 00:24:58,680
Mit diesem schnellen Verständnis, wie Reisepass, Reisepass

301
00:24:58,680 --> 00:25:02,590
und Reisepass Local-Mongoose uns helfen,

302
00:25:02,590 --> 00:25:09,390
die lokale Strategie für Benutzername und Passwort in unserer Anwendung zu vereinfachen.

303
00:25:09,390 --> 00:25:11,660
Wir schließen diese Übung ab.

304
00:25:11,660 --> 00:25:18,390
Dies ist ein guter Zeitpunkt für Sie, ein Git-Commit mit dem Nachrichtenpass zu machen.