﻿1
00:00:00,960 --> 00:00:03,130
‫-: In den letzten Videos haben

2
00:00:03,130 --> 00:00:06,220
‫wir also einem Benutzer erlaubt, sein Passwort zurückzusetzen

3
00:00:06,220 --> 00:00:08,070
‫und dann ein neues zu

4
00:00:08,070 --> 00:00:09,910
‫erstellen, aber jetzt

5
00:00:09,910 --> 00:00:13,383
‫möchten wir auch einem eingeloggten Benutzer ermöglichen, sein Passwort

6
00:00:13,383 --> 00:00:15,740
‫einfach zu aktualisieren, ohne es vergessen

7
00:00:15,740 --> 00:00:18,880
‫zu müssen, und so ohne diesen ganzen Reset-Prozess.

8
00:00:18,880 --> 00:00:20,833
‫Also bauen wir das jetzt auf.

9
00:00:22,620 --> 00:00:23,810
‫Und das

10
00:00:23,810 --> 00:00:26,413
‫machen wir wie zuvor in unserem Authentifizierungs-Controller.

11
00:00:28,420 --> 00:00:30,523
‫Also exportieren. Kennwort aktualisieren.

12
00:00:35,142 --> 00:00:38,940
‫In Ordnung, und so, wie

13
00:00:38,940 --> 00:00:43,940
‫immer, unsere drei Middleware-Parameter hier, und okay.

14
00:00:44,380 --> 00:00:48,250
‫Denken Sie jetzt daran, dass diese Funktion zum Aktualisieren des

15
00:00:48,250 --> 00:00:50,260
‫Passworts nur für eingeloggte Benutzer

16
00:00:50,260 --> 00:00:54,290
‫gilt, aber wir müssen trotzdem sein aktuelles Passwort eingeben, um zu

17
00:00:54,290 --> 00:00:55,920
‫bestätigen, dass der Benutzer

18
00:00:55,920 --> 00:00:58,990
‫tatsächlich der ist, der er vorgibt zu sein.

19
00:00:58,990 --> 00:01:01,260
‫Also nur als Sicherheitsmaßnahme, denn stellen

20
00:01:01,260 --> 00:01:04,950
‫Sie sich vor, jemand würde Ihren Computer geöffnet vorfinden und

21
00:01:04,950 --> 00:01:08,150
‫dann Passwörter auf den Websites ändern können, die Sie

22
00:01:08,150 --> 00:01:09,530
‫gerade geöffnet haben,

23
00:01:09,530 --> 00:01:12,610
‫ohne erneut nach einem Passwort gefragt zu werden.

24
00:01:12,610 --> 00:01:15,300
‫Und das würde Sie im

25
00:01:15,300 --> 00:01:18,260
‫Grunde von all Ihren bestehenden Anwendungen abmelden,

26
00:01:18,260 --> 00:01:21,000
‫was natürlich eine schreckliche Erfahrung wäre.

27
00:01:21,000 --> 00:01:23,800
‫Aus Sicherheitsgründen müssen wir daher immer

28
00:01:23,800 --> 00:01:27,800
‫nach dem aktuellen Passwort fragen, bevor wir es aktualisieren.

29
00:01:27,800 --> 00:01:30,530
‫Und vor diesem Hintergrund legen wir alle

30
00:01:30,530 --> 00:01:32,760
‫Schritte fest, die wir unternehmen

31
00:01:32,760 --> 00:01:36,030
‫müssen, um diese Funktionalität wie zuvor zu implementieren.

32
00:01:36,030 --> 00:01:39,530
‫Als erstes müssen wir den Benutzer im Grunde

33
00:01:39,530 --> 00:01:41,903
‫aus der Sammlung holen.

34
00:01:44,840 --> 00:01:47,480
‫Als nächstes müssen wir überprüfen,

35
00:01:47,480 --> 00:01:50,263
‫ob das veröffentlichte Passwort korrekt ist.

36
00:01:56,430 --> 00:01:57,880
‫Rechts.

37
00:01:57,880 --> 00:02:01,800
‫Dann drittens, also wenn das Passwort richtig ist,

38
00:02:01,800 --> 00:02:04,623
‫dann aktualisieren Sie das Passwort.

39
00:02:07,170 --> 00:02:11,013
‫Und schließlich müssen wir den Benutzer erneut anmelden,

40
00:02:12,180 --> 00:02:16,610
‫also im Grunde das jsonwebtoken an den Benutzer zurücksenden, der

41
00:02:16,610 --> 00:02:20,860
‫jetzt mit dem neuen, gerade aktualisierten Passwort angemeldet ist.

42
00:02:20,860 --> 00:02:23,860
‫Okay, und das ist eigentlich alles sehr ähnlich zu dem,

43
00:02:23,860 --> 00:02:25,510
‫was wir schon vorher

44
00:02:25,510 --> 00:02:27,370
‫gemacht haben, und deshalb überlasse ich

45
00:02:27,370 --> 00:02:29,430
‫dieses hier als Herausforderung für dich, okay?

46
00:02:29,430 --> 00:02:32,660
‫Versuchen Sie also, dies selbst zu implementieren, und wenn Sie brauchen,

47
00:02:32,660 --> 00:02:35,313
‫können Sie sich natürlich den Code ansehen, den wir

48
00:02:35,313 --> 00:02:36,800
‫zuvor geschrieben haben, aber

49
00:02:36,800 --> 00:02:39,440
‫versuchen Sie wirklich, den Code selbst zu schreiben,

50
00:02:39,440 --> 00:02:41,720
‫ohne zu viel zu kopieren, okay ?

51
00:02:41,720 --> 00:02:44,140
‫Sie können sich also den Rest des Codes ansehen,

52
00:02:44,140 --> 00:02:47,680
‫um zu sehen, wie er funktioniert, aber dann kopieren Sie ihn nicht einfach, okay?

53
00:02:47,680 --> 00:02:50,610
‫Denn dann wirst du nicht wirklich lernen, in Ordnung.

54
00:02:50,610 --> 00:02:52,900
‫Also, pausiere das Video hier und wir sehen uns

55
00:02:52,900 --> 00:02:54,083
‫gleich mit meiner Lösung.

56
00:02:57,510 --> 00:03:00,450
‫Okay, ich hoffe, Sie haben es geschafft, dies zu

57
00:03:00,450 --> 00:03:03,533
‫implementieren und zum Laufen zu bringen, so habe ich es gemacht.

58
00:03:04,960 --> 00:03:08,963
‫Wir erstellen also wie immer eine neue Benutzervariable und warten dort

59
00:03:09,970 --> 00:03:14,353
‫auf das Ergebnis von Benutzer. findById, und

60
00:03:17,930 --> 00:03:20,940
‫woher kommt diese ID eigentlich?

61
00:03:20,940 --> 00:03:24,590
‫Denken Sie noch einmal daran, dass dieses Update-Passwort nur für

62
00:03:24,590 --> 00:03:27,710
‫authentifizierte, also für eingeloggte Benutzer gedacht ist, und

63
00:03:27,710 --> 00:03:30,830
‫daher haben wir zu diesem Zeitpunkt bereits den

64
00:03:30,830 --> 00:03:33,123
‫aktuellen Benutzer in unserem Anforderungsobjekt.

65
00:03:34,380 --> 00:03:37,273
‫Okay, das kommt von der Protect Middleware.

66
00:03:38,640 --> 00:03:42,670
‫Also, erf. Benutzer. id, und denken

67
00:03:42,670 --> 00:03:46,933
‫Sie dann daran, dass wir explizit nach dem Passwort fragen müssen, okay?

68
00:03:48,830 --> 00:03:53,260
‫Weil es standardmäßig nicht in der Ausgabe enthalten ist.

69
00:03:53,260 --> 00:03:55,883
‫Also haben wir das im Schema definiert, erinnerst du dich?

70
00:03:56,860 --> 00:03:58,730
‫Und wir brauchen dieses Passwort

71
00:03:58,730 --> 00:04:01,860
‫tatsächlich, weil wir es jetzt mit dem

72
00:04:01,860 --> 00:04:03,690
‫in der Datenbank gespeicherten

73
00:04:03,690 --> 00:04:05,300
‫vergleichen wollen, und

74
00:04:05,300 --> 00:04:08,850
‫dafür werden wir wie zuvor dieses Instanzobjekt verwenden, das

75
00:04:08,850 --> 00:04:10,720
‫wir hier irgendwo haben.

76
00:04:10,720 --> 00:04:13,360
‫Ja, also CorrectPassword, das in

77
00:04:13,360 --> 00:04:15,250
‫allen Benutzerdokumenten verfügbar

78
00:04:15,250 --> 00:04:17,680
‫ist, also zuerst das

79
00:04:17,680 --> 00:04:21,850
‫Kandidatenpasswort und dann das eigentliche Benutzerpasswort, in Ordnung.

80
00:04:21,850 --> 00:04:23,370
‫Oh, und jetzt bekomme

81
00:04:23,370 --> 00:04:26,120
‫ich diesen Fehler, weil ich dies natürlich noch

82
00:04:26,120 --> 00:04:28,203
‫nicht als asynchrone Funktion deklariert habe.

83
00:04:29,610 --> 00:04:32,534
‫Also, async, und bevor wir es

84
00:04:32,534 --> 00:04:36,577
‫vergessen, packen wir es auch hier in die catchAsync-Funktion ein.

85
00:04:38,589 --> 00:04:40,513
‫Wie auch immer, wir

86
00:04:40,513 --> 00:04:43,157
‫wollen hier im Grunde wie zuvor einen

87
00:04:43,157 --> 00:04:46,402
‫Fehler erzeugen, wenn das aktuelle Passwort nicht korrekt ist,

88
00:04:46,402 --> 00:04:48,572
‫und schreiben wir das in Code.

89
00:04:48,572 --> 00:04:51,239
‫Also, wenn nicht Benutzer. correctPassword, und

90
00:04:53,870 --> 00:04:56,283
‫dann merken Sie sich

91
00:04:56,283 --> 00:04:58,808
‫das Kandidaten-Passwort, und damit eines

92
00:04:58,808 --> 00:05:03,808
‫in einem Körper, in einer Eigenschaft, die wir passwordConfirm nennen.

93
00:05:03,980 --> 00:05:07,941
‫Okay, und dann als zweites Argument das eigentliche Passwort, also

94
00:05:07,941 --> 00:05:10,108
‫ein Benutzer. Passwort.

95
00:05:11,036 --> 00:05:13,820
‫Und dann denken Sie daran, dass dies eine asynchrone Funktion ist

96
00:05:13,820 --> 00:05:16,323
‫und wir sie daher auch hier abwarten müssen.

97
00:05:18,400 --> 00:05:22,173
‫Gut, falls das Passwort nicht korrekt ist, erstellen

98
00:05:24,020 --> 00:05:27,500
‫wir hier wie immer einen neuen Fehler.

99
00:05:27,500 --> 00:05:32,000
‫Also, neuer AppError, und dieses Mal

100
00:05:32,930 --> 00:05:37,930
‫sagen wir, dass Ihr aktuelles Passwort falsch ist,

101
00:05:38,720 --> 00:05:43,660
‫und dann Statuscode 401 für nicht autorisiert.

102
00:05:43,660 --> 00:05:45,650
‫Alles klar, großartig.

103
00:05:45,650 --> 00:05:48,240
‫Wenn wir es nun im Code bis

104
00:05:48,240 --> 00:05:51,750
‫zu diesem Punkt schaffen, also im Grunde, wenn das Passwort auch

105
00:05:51,750 --> 00:05:54,460
‫korrekt ist, können wir das Passwort tatsächlich aktualisieren,

106
00:05:54,460 --> 00:05:56,400
‫und wie machen wir das?

107
00:05:56,400 --> 00:05:58,763
‫Nun, ganz einfach, das haben wir schon mal gemacht.

108
00:05:59,630 --> 00:06:04,630
‫Wir sagen nur Benutzer. Passwort ist gleich req. Karosserie. Passwort, und

109
00:06:08,200 --> 00:06:11,793
‫dann das gleiche natürlich für das Passwort bestätigen.

110
00:06:14,010 --> 00:06:17,560
‫Okay, und die Validierung wird automatisch von dem Validator durchgeführt,

111
00:06:17,560 --> 00:06:21,300
‫den wir im Schema angegeben haben, und das wird durchgeführt,

112
00:06:21,300 --> 00:06:23,823
‫sobald wir es tatsächlich gespeichert haben.

113
00:06:24,690 --> 00:06:29,280
‫Wir warten also auf den Benutzer. speichern, und deshalb

114
00:06:29,280 --> 00:06:32,400
‫deaktivieren wir dieses Mal die Validierung

115
00:06:32,400 --> 00:06:35,920
‫nicht, weil wir natürlich wollen, dass die

116
00:06:35,920 --> 00:06:39,120
‫Validierung stattfindet. Wie ich bereits sagte, möchten

117
00:06:39,120 --> 00:06:42,010
‫wir überprüfen, ob die Passwortbestätigung tatsächlich

118
00:06:42,010 --> 00:06:44,560
‫mit dem Passwort übereinstimmt, oder?

119
00:06:44,560 --> 00:06:45,570
‫Gut.

120
00:06:45,570 --> 00:06:49,460
‫Und jetzt, um wirklich sicher zu gehen, dass Sie verstehen, warum wir so

121
00:06:49,460 --> 00:06:53,533
‫etwas wie user nicht gemacht haben. findByIdAndUpdate.

122
00:06:56,530 --> 00:06:59,260
‫Warum haben wir es nicht so gemacht?

123
00:06:59,260 --> 00:07:02,450
‫Und ich weiß, dass ich schon oft darüber gesprochen habe,

124
00:07:02,450 --> 00:07:05,330
‫aber ich möchte, dass Sie hundertprozentig verstehen, warum wir

125
00:07:05,330 --> 00:07:07,990
‫dieses Update aus zwei Gründen nicht verwenden können,

126
00:07:07,990 --> 00:07:09,540
‫also lassen Sie

127
00:07:09,540 --> 00:07:12,143
‫mich noch einmal auf unser Modell zurückkommen.

128
00:07:13,090 --> 00:07:14,650
‫Die erste

129
00:07:14,650 --> 00:07:18,920
‫ist, dass diese Validierung hier nicht funktionieren wird, okay?

130
00:07:18,920 --> 00:07:22,670
‫Und das liegt im Grunde daran. Das Passwort wird

131
00:07:22,670 --> 00:07:27,420
‫beim Aktualisieren nicht definiert, also wenn wir find by ID und update

132
00:07:27,420 --> 00:07:29,440
‫verwenden, weil Mongoose intern, hinter

133
00:07:29,440 --> 00:07:33,200
‫den Kulissen, das aktuelle Objekt nicht wirklich im Speicher

134
00:07:33,200 --> 00:07:36,230
‫behält, und daher wird dies hier nicht funktionieren.

135
00:07:36,230 --> 00:07:39,130
‫Und wie gesagt, darüber habe ich schon

136
00:07:39,130 --> 00:07:42,650
‫einmal gesprochen, also steht es hier auch tatsächlich aufgeschrieben, okay?

137
00:07:42,650 --> 00:07:45,600
‫Aber es ist wirklich wichtig, daran zu denken, update

138
00:07:45,600 --> 00:07:49,340
‫nicht für alles zu verwenden, was mit Passwörtern zu tun hat, in Ordnung?

139
00:07:49,340 --> 00:07:51,160
‫Diese wird also

140
00:07:51,160 --> 00:07:53,640
‫nicht funktionieren, und auch diese

141
00:07:53,640 --> 00:07:56,510
‫beiden vorgespeicherten Middlewares werden nicht funktionieren.

142
00:07:56,510 --> 00:07:59,820
‫Wenn wir also einfach update zum Aktualisieren

143
00:07:59,820 --> 00:08:03,000
‫des Passworts verwenden, dann wäre dieses Passwort

144
00:08:03,000 --> 00:08:04,750
‫nicht verschlüsselt, was

145
00:08:04,750 --> 00:08:07,530
‫diese erste Middleware ist, und

146
00:08:07,530 --> 00:08:11,030
‫dann wäre auch der PasswortChangedAt-Zeitstempel nicht gesetzt, okay?

147
00:08:11,030 --> 00:08:12,830
‫Also, nichts davon würde

148
00:08:12,830 --> 00:08:15,943
‫funktionieren, und deshalb müssen wir es wirklich so machen.

149
00:08:17,470 --> 00:08:19,020
‫Stellen wir das einfach nochmal hier.

150
00:08:21,330 --> 00:08:24,430
‫Und jetzt (murmelt) haben wir den Benutzer

151
00:08:24,430 --> 00:08:27,840
‫eingeloggt und das Token an den Client zurückgeschickt.

152
00:08:27,840 --> 00:08:30,210
‫Nun, das wäre tatsächlich das vierte Mal,

153
00:08:30,210 --> 00:08:32,320
‫dass wir den gleichen Code erstellt

154
00:08:32,320 --> 00:08:34,190
‫haben, also im Grunde dieses Stück

155
00:08:34,190 --> 00:08:36,710
‫Code, und das ist jetzt sehr schnell in

156
00:08:36,710 --> 00:08:38,410
‫seine eigene Funktion umgestaltet.

157
00:08:38,410 --> 00:08:42,410
‫Nun, dieser Code ist tatsächlich nicht überall gleich.

158
00:08:42,410 --> 00:08:45,090
‫Hier haben wir also den Statuscode 400

159
00:08:45,090 --> 00:08:47,250
‫gesendet, und wir senden

160
00:08:47,250 --> 00:08:51,280
‫den Benutzer nicht, aber hier oben im Signup-Handler haben wir tatsächlich

161
00:08:51,280 --> 00:08:53,680
‫einen anderen Statuscode und wir haben

162
00:08:53,680 --> 00:08:56,900
‫den Benutzer auch an den Client gesendet, okay?

163
00:08:56,900 --> 00:08:59,873
‫Lassen Sie uns dies in unserer Funktion tatsächlich im Hinterkopf behalten.

164
00:09:00,890 --> 00:09:05,890
‫Also, lassen Sie uns hier eine Funktion erstellen, Token erstellen und

165
00:09:06,140 --> 00:09:09,293
‫senden, und dann sind die Argumente,

166
00:09:11,100 --> 00:09:14,350
‫die wir hier brauchen, der Benutzer, weil

167
00:09:14,350 --> 00:09:17,070
‫dort die ID gespeichert ist.

168
00:09:17,070 --> 00:09:18,893
‫Dann wollen wir auch

169
00:09:20,220 --> 00:09:24,060
‫den Statuscode, und natürlich müssen wir Zugriff auf das

170
00:09:24,060 --> 00:09:26,940
‫Response-Objekt haben, um tatsächlich eine Response an

171
00:09:26,940 --> 00:09:29,510
‫den Client zurücksenden zu können, okay?

172
00:09:29,510 --> 00:09:32,473
‫Also brauchen wir jetzt im Grunde diesen Code.

173
00:09:33,775 --> 00:09:35,930
‫Also kopieren wir es, fügen

174
00:09:35,930 --> 00:09:38,700
‫es hier ein und ersetzen dann irrelevante Variablen.

175
00:09:38,700 --> 00:09:42,480
‫Der Benutzer wird also einfach Benutzer genannt, also

176
00:09:42,480 --> 00:09:44,963
‫genau so und hier dasselbe.

177
00:09:46,470 --> 00:09:47,510
‫Also, kein

178
00:09:47,510 --> 00:09:51,150
‫neuer Benutzer, und dann ersetzen wir das hier durch den

179
00:09:51,150 --> 00:09:54,440
‫Statuscode, also den, der in unsere Funktion kommt, und

180
00:09:54,440 --> 00:09:57,053
‫ich denke, das war es tatsächlich.

181
00:09:58,330 --> 00:10:01,070
‫Also, lassen Sie uns jetzt fortfahren

182
00:10:01,070 --> 00:10:06,070
‫und es ersetzen, also createSendToken, und hier heißt der Benutzer newUser,

183
00:10:09,040 --> 00:10:10,763
‫der Statuscode ist

184
00:10:12,260 --> 00:10:15,093
‫201 und dann natürlich das Antwortobjekt.

185
00:10:16,730 --> 00:10:19,223
‫Okay, jetzt können wir diesen Code loswerden und

186
00:10:20,680 --> 00:10:21,863
‫kopieren ihn einfach.

187
00:10:23,200 --> 00:10:26,903
‫Okay, also beim Login haben wir natürlich auch einen Token

188
00:10:28,860 --> 00:10:32,630
‫geschickt, aber diesmal heißt der User tatsächlich User und der

189
00:10:32,630 --> 00:10:34,243
‫Statuscode ist 200.

190
00:10:38,470 --> 00:10:39,920
‫Und jetzt kopieren wir diesen.

191
00:10:42,210 --> 00:10:45,853
‫Also, der nächste sollte hier sein, und Passwort zurücksetzen, und

192
00:10:46,930 --> 00:10:48,400
‫hier ist es

193
00:10:48,400 --> 00:10:51,323
‫tatsächlich dasselbe, also der Name ist Benutzer und

194
00:10:53,740 --> 00:10:57,550
‫Code 200, und jetzt ist es endlich auch hier dasselbe.

195
00:10:57,550 --> 00:11:02,360
‫Damit ist unsere Passwortaktualisierungsfunktion abgeschlossen.

196
00:11:02,360 --> 00:11:03,740
‫Damit dies nun funktioniert,

197
00:11:03,740 --> 00:11:06,830
‫müssen wir die Route natürlich auch hier in unserem

198
00:11:06,830 --> 00:11:08,033
‫User-Router implementieren.

199
00:11:09,900 --> 00:11:14,400
‫Also Router. patch, und wir werden

200
00:11:14,400 --> 00:11:17,610
‫einen Patch machen, weil wir uns tatsächlich ändern,

201
00:11:17,610 --> 00:11:21,460
‫also das Benutzerdokument manipulieren, und dafür ist Patch da.

202
00:11:21,460 --> 00:11:24,590
‫Und die Route heißt updateMyPassword.

203
00:11:29,060 --> 00:11:30,630
‫Also, mein Passwort,

204
00:11:30,630 --> 00:11:34,420
‫weil es für den aktuell angemeldeten Benutzer ist, und denken Sie

205
00:11:34,420 --> 00:11:36,810
‫daran, dass dies nur für angemeldete Benutzer

206
00:11:36,810 --> 00:11:41,770
‫funktioniert, und daher müssen wir authController verwenden. Protect, der dann auch

207
00:11:41,770 --> 00:11:44,240
‫das User-Objekt

208
00:11:44,240 --> 00:11:47,270
‫auf ein Request-Objekt legt, okay?

209
00:11:47,270 --> 00:11:51,593
‫Also, schützen und dann das authController-Update-Passwort, das

210
00:11:51,593 --> 00:11:55,640
‫wir gerade erstellt haben, in Ordnung.

211
00:11:55,640 --> 00:11:59,593
‫Also, lassen Sie uns das jetzt tatsächlich testen, okay?

212
00:12:02,720 --> 00:12:05,763
‫Also, kopieren wir diese Route hier, also

213
00:12:08,080 --> 00:12:09,790
‫UpdateMyPassword, und jetzt müssen

214
00:12:14,300 --> 00:12:18,190
‫wir diese drei Passwörter im Hauptteil senden, also ist

215
00:12:18,190 --> 00:12:20,103
‫es im Grunde das

216
00:12:21,290 --> 00:12:24,817
‫PasswortCurrent, und im Moment lasse ich sie leer,

217
00:12:30,350 --> 00:12:32,050
‫ich möchte

218
00:12:32,050 --> 00:12:35,000
‫einfach das Feld einfügen Namen hier vorerst.

219
00:12:35,000 --> 00:12:38,750
‫Also, passwordCurrent, dann nur Passwort, was im Grunde

220
00:12:38,750 --> 00:12:40,503
‫das neue

221
00:12:41,690 --> 00:12:44,110
‫ist, und dann natürlich passwordConfirm.

222
00:12:46,930 --> 00:12:50,320
‫Okay, und jetzt müssen wir uns tatsächlich als Benutzer

223
00:12:50,320 --> 00:12:53,140
‫anmelden, denn denken Sie daran, dies

224
00:12:53,140 --> 00:12:56,250
‫funktioniert nur, wenn der Benutzer bereits angemeldet ist.

225
00:12:56,250 --> 00:12:59,333
‫Also lassen Sie es uns hier mit dem Administrator machen.

226
00:13:00,633 --> 00:13:04,620
‫Und das hier ist, sollte immer noch das aktuelle Passwort

227
00:13:04,620 --> 00:13:07,610
‫sein, und tatsächlich sind wir jetzt eingeloggt.

228
00:13:07,610 --> 00:13:10,520
‫Und denken Sie daran, dass dieses

229
00:13:10,520 --> 00:13:13,313
‫Token jetzt in der

230
00:13:14,240 --> 00:13:17,080
‫JWT-Umgebungsvariablen gespeichert wird, und verwenden wir

231
00:13:17,080 --> 00:13:20,400
‫es hier zur Authentifizierung genau wie zuvor.

232
00:13:20,400 --> 00:13:24,710
‫Auf dieser Autorisierungsregisterkarte wählen wir also Bearer Token aus,

233
00:13:24,710 --> 00:13:27,480
‫und dann wird diese JWT-Variable

234
00:13:27,480 --> 00:13:29,293
‫automatisch vorab ausgefüllt.

235
00:13:30,140 --> 00:13:32,830
‫In Ordnung, und daher wird dann

236
00:13:32,830 --> 00:13:35,873
‫die Benutzer-ID eigentlich herkommen, erinnerst du dich?

237
00:13:37,830 --> 00:13:42,830
‫Wie auch immer, lassen Sie uns jetzt das aktuelle Passwort angeben, also pass1234, und

238
00:13:42,999 --> 00:13:45,613
‫dann sagen wir neues Passwort, okay?

239
00:13:49,040 --> 00:13:50,713
‫Kopiere es und füge

240
00:13:51,560 --> 00:13:54,170
‫es hier ein, aber eigentlich möchte ich

241
00:13:54,170 --> 00:13:56,960
‫es noch einmal mit einem falschen Passwort-Bestätigen testen,

242
00:13:56,960 --> 00:13:59,810
‫nur um zu sehen, ob unsere Validierung noch

243
00:13:59,810 --> 00:14:02,720
‫funktioniert und jetzt ist die Route nicht definiert,

244
00:14:02,720 --> 00:14:07,300
‫aber das liegt einfach daran, dass wir es verwenden hier das falsche Verb.

245
00:14:07,300 --> 00:14:09,610
‫Natürlich muss es gepatcht werden.

246
00:14:09,610 --> 00:14:11,430
‫Versuchen wir es noch einmal,

247
00:14:11,430 --> 00:14:15,040
‫aber jetzt bekommen wir, dass Ihr aktuelles Passwort falsch ist, aber

248
00:14:15,040 --> 00:14:18,270
‫eigentlich ist es das nicht, also ist es tatsächlich richtig.

249
00:14:18,270 --> 00:14:21,163
‫Mit unserem Code muss also etwas nicht stimmen,

250
00:14:22,260 --> 00:14:24,143
‫also versuchen wir es hier.

251
00:14:26,440 --> 00:14:28,440
‫Und ja, hier liegt

252
00:14:28,440 --> 00:14:32,240
‫eigentlich das Problem, denn wir wollen das Passwort natürlich nicht vergleichen

253
00:14:32,240 --> 00:14:34,763
‫oder bestätigen, sondern mit dem aktuellen Passwort.

254
00:14:35,750 --> 00:14:39,780
‫Okay, das ist nur ein dummer Fehler, in Ordnung, und

255
00:14:39,780 --> 00:14:41,620
‫jetzt sollte es funktionieren.

256
00:14:41,620 --> 00:14:45,000
‫Also wollen wir natürlich das aktuelle Passwort

257
00:14:45,000 --> 00:14:47,050
‫mit dem aktuell

258
00:14:47,050 --> 00:14:50,220
‫in der Datenbank gespeicherten vergleichen, in Ordnung.

259
00:14:50,220 --> 00:14:51,503
‫Versuchen wir es

260
00:14:52,670 --> 00:14:55,460
‫noch einmal, und das ist der Validierungsfehler, nach dem

261
00:14:55,460 --> 00:14:57,080
‫wir gesucht haben. Die Passwörter sind

262
00:14:57,080 --> 00:14:59,840
‫also nicht dieselben, weil sie es tatsächlich nicht sind.

263
00:14:59,840 --> 00:15:02,610
‫Und jetzt, bevor wir das Passwort tatsächlich aktualisieren, werfen

264
00:15:02,610 --> 00:15:04,560
‫wir einen Blick auf Compass hier.

265
00:15:06,070 --> 00:15:08,550
‫Lassen Sie es uns hier schnell

266
00:15:08,550 --> 00:15:11,160
‫aktualisieren, und im Moment ist dies das Passwort.

267
00:15:11,160 --> 00:15:15,080
‫Hier endet also pW1i, okay?

268
00:15:15,080 --> 00:15:17,410
‫Also aktualisieren wir jetzt das

269
00:15:17,410 --> 00:15:21,333
‫Passwort und sehen, wie es danach aussehen wird, okay?

270
00:15:23,400 --> 00:15:25,633
‫Also, jetzt sollte alles richtig sein.

271
00:15:26,720 --> 00:15:31,720
‫Und tatsächlich bekommen wir unseren Erfolg und unser Zeichen, in Ordnung.

272
00:15:33,500 --> 00:15:36,000
‫Also, lassen Sie uns das hier schnell bestätigen,

273
00:15:36,000 --> 00:15:38,570
‫und tatsächlich sehen Sie, dass sich das Passwort

274
00:15:38,570 --> 00:15:40,830
‫geändert hat und auch der aktuelle

275
00:15:40,830 --> 00:15:44,403
‫Zeitstempel, also die Zeit, zu der ich dieses Video im Grunde aufnehme.

276
00:15:45,370 --> 00:15:48,670
‫In Ordnung, und jetzt, genau wie zuvor, lassen

277
00:15:48,670 --> 00:15:51,960
‫Sie uns diesen Test hier tatsächlich durchführen.

278
00:15:51,960 --> 00:15:55,433
‫Also grundsätzlich das Token als Umgebungsvariable speichern.

279
00:15:59,150 --> 00:16:03,910
‫Damit hier in Postman wirklich alles funktioniert.

280
00:16:03,910 --> 00:16:06,453
‫Okay, speichern wir das tatsächlich,

281
00:16:07,590 --> 00:16:12,590
‫aktualisieren wir das aktuelle Benutzerpasswort, um es wirklich eindeutig zu machen,

282
00:16:14,560 --> 00:16:17,780
‫und ja, ich denke, das war es.

283
00:16:17,780 --> 00:16:21,090
‫Ich denke, das ist alles, was wir tun müssen,

284
00:16:21,090 --> 00:16:24,090
‫um das Passwort eines Benutzers zu aktualisieren.

285
00:16:24,090 --> 00:16:27,890
‫Als nächstes werden wir dann die Aktualisierung anderer Benutzerdaten implementieren,

286
00:16:27,890 --> 00:16:30,713
‫also Dinge wie E-Mail oder Passwörter.

