﻿1
00:00:01,260 --> 00:00:02,790
‫-: Willkommen zurück.

2
00:00:02,790 --> 00:00:05,270
‫Daher haben wir in

3
00:00:05,270 --> 00:00:07,770
‫unserem Projekt bisher die Authentifizierung implementiert.

4
00:00:07,770 --> 00:00:09,930
‫Und es funktioniert gut.

5
00:00:09,930 --> 00:00:12,960
‫Manchmal reicht es jedoch nicht aus, sich

6
00:00:12,960 --> 00:00:14,640
‫einfach zu authentifizieren, also

7
00:00:14,640 --> 00:00:16,150
‫einen Benutzer anzumelden.

8
00:00:16,150 --> 00:00:17,490
‫Und in diesem

9
00:00:17,490 --> 00:00:20,173
‫Video werden wir auch die Autorisierung implementieren.

10
00:00:21,730 --> 00:00:24,850
‫Stellen Sie sich vor, Sie würden eine Tour

11
00:00:24,850 --> 00:00:26,440
‫aus unserer Datenbank löschen.

12
00:00:26,440 --> 00:00:28,890
‫Das sollte natürlich nicht jedem

13
00:00:28,890 --> 00:00:30,530
‫Benutzer erlaubt sein.

14
00:00:30,530 --> 00:00:33,306
‫Auch wenn der Benutzer eingeloggt ist, oder?

15
00:00:33,306 --> 00:00:36,055
‫Wir müssen also grundsätzlich nur

16
00:00:36,055 --> 00:00:38,510
‫bestimmte Benutzertypen autorisieren, um

17
00:00:38,510 --> 00:00:40,720
‫bestimmte Aktionen auszuführen.

18
00:00:40,720 --> 00:00:43,550
‫Und genau das ist die Autorisierung.

19
00:00:43,550 --> 00:00:46,562
‫Es überprüft, ob ein bestimmter Benutzer die Rechte

20
00:00:46,562 --> 00:00:49,520
‫hat, mit einer bestimmten Ressource zu interagieren.

21
00:00:49,520 --> 00:00:53,181
‫Auch hier überprüfen wir grundsätzlich mit Autorisierung, ob

22
00:00:53,181 --> 00:00:58,080
‫ein bestimmter Benutzer auf eine bestimmte Ressource zugreifen darf, auch wenn

23
00:00:58,080 --> 00:00:59,890
‫er eingeloggt ist.

24
00:00:59,890 --> 00:01:03,150
‫Es werden also nicht alle angemeldeten Benutzer die gleichen Aktionen

25
00:01:03,150 --> 00:01:05,950
‫in unserer API ausführen können, in Ordnung?

26
00:01:05,950 --> 00:01:08,119
‫Und dies ist ein sehr häufiges

27
00:01:08,119 --> 00:01:10,240
‫Szenario, das normalerweise in jeder Webanwendung

28
00:01:10,240 --> 00:01:12,222
‫implementiert werden sollte, in Ordnung?

29
00:01:12,222 --> 00:01:15,163
‫Also bauen wir hier eine

30
00:01:15,163 --> 00:01:18,410
‫weitere Middleware-Funktion, diesmal um bestimmte Routen einzuschränken.

31
00:01:18,410 --> 00:01:20,780
‫Zum Beispiel zum Löschen von Touren.

32
00:01:20,780 --> 00:01:23,310
‫Das bedeutet, dass wir hier eine weitere

33
00:01:23,310 --> 00:01:24,840
‫Middleware-Funktion erstellen werden.

34
00:01:24,840 --> 00:01:27,290
‫Diesmal, um bestimmte Routen, wie zum Beispiel

35
00:01:27,290 --> 00:01:29,068
‫das Löschen von

36
00:01:29,068 --> 00:01:31,338
‫Touren, nur auf bestimmte Benutzerrollen einzuschränken.

37
00:01:31,338 --> 00:01:32,630
‫Okay?

38
00:01:32,630 --> 00:01:35,020
‫Lassen Sie mich Ihnen also zeigen, wie das

39
00:01:35,020 --> 00:01:36,520
‫in der Praxis aussehen würde.

40
00:01:36,520 --> 00:01:38,410
‫Kehren wir hier

41
00:01:38,410 --> 00:01:42,270
‫in den Tourrouten zu dem Beispiel des Löschens von

42
00:01:42,270 --> 00:01:46,770
‫Touren zurück und fügen wir dem Stack hier Middleware hinzu.

43
00:01:46,770 --> 00:01:50,670
‫Also authController, schützen.

44
00:01:50,670 --> 00:01:52,300
‫Zuerst müssen wir also

45
00:01:52,300 --> 00:01:55,490
‫immer überprüfen, ob ein Benutzer tatsächlich eingeloggt ist, okay?

46
00:01:55,490 --> 00:01:58,550
‫Wenn ein Administrator also versucht, eine Tour zu löschen,

47
00:01:58,550 --> 00:02:00,020
‫müsste er trotzdem

48
00:02:00,020 --> 00:02:02,350
‫überprüfen, ob er tatsächlich eingeloggt ist, oder?

49
00:02:02,350 --> 00:02:04,610
‫Die erste Middleware im Stack wird hier

50
00:02:04,610 --> 00:02:06,690
‫also immer die Protect-Middleware sein.

51
00:02:06,690 --> 00:02:09,130
‫Aber danach haben wir

52
00:02:09,130 --> 00:02:13,113
‫auch den authController. beschränken.

53
00:02:14,760 --> 00:02:17,000
‫Also restriktiv, okay?

54
00:02:17,000 --> 00:02:20,180
‫Und an diese Funktion übergeben wir dann einige Benutzerrollen,

55
00:02:20,180 --> 00:02:23,220
‫die berechtigt sind, mit dieser Ressource zu interagieren.

56
00:02:23,220 --> 00:02:27,030
‫In diesem Fall mit dem Löschen einer Tour, okay?

57
00:02:27,030 --> 00:02:29,390
‫Also lass uns diesen auf Admin setzen.

58
00:02:29,390 --> 00:02:31,650
‫Also nur an Administratoren.

59
00:02:31,650 --> 00:02:35,120
‫Okay, und jetzt haben wir es hier mit Benutzerrollen zu tun.

60
00:02:35,120 --> 00:02:36,650
‫Also genau wie Admin.

61
00:02:36,650 --> 00:02:39,584
‫Und im Moment haben wir das nicht in unserem Benutzermodell.

62
00:02:39,584 --> 00:02:42,642
‫Also lassen Sie uns das hier schnell implementieren.

63
00:02:42,642 --> 00:02:43,633
‫Gut.

64
00:02:44,470 --> 00:02:48,160
‫Also, lass uns das tun.

65
00:02:48,160 --> 00:02:52,323
‫Eigentlich vor dem Passwort-Zeug, so wie hier.

66
00:02:56,170 --> 00:02:59,730
‫Und hier unten können Sie tatsächlich sehen, wie unser

67
00:02:59,730 --> 00:03:02,070
‫nicht abgefangener Ausnahmehandler gut funktioniert,

68
00:03:02,070 --> 00:03:05,130
‫denn restrikto ist noch keine Funktion, oder?

69
00:03:05,130 --> 00:03:06,610
‫Wir haben es noch nicht umgesetzt.

70
00:03:06,610 --> 00:03:08,810
‫Ich habe es einfach benutzt, um zu zeigen,

71
00:03:08,810 --> 00:03:10,410
‫was genau wir bauen werden.

72
00:03:10,410 --> 00:03:12,280
‫Da liegt natürlich ein Fehler

73
00:03:12,280 --> 00:03:13,510
‫vor und

74
00:03:13,510 --> 00:03:17,490
‫Nodemon wartet nun darauf, dass wir den Server neu starten, okay?

75
00:03:17,490 --> 00:03:20,323
‫Wie auch immer, die Rolle hier sollte

76
00:03:26,240 --> 00:03:30,110
‫vom Typ String sein, und jetzt werde ich den Enum-Validator verwenden,

77
00:03:30,110 --> 00:03:33,310
‫um hier nur die Angabe bestimmter Rollentypen zuzulassen.

78
00:03:33,310 --> 00:03:37,410
‫Und das sind die allgemeinen, also die normalen Benutzer, also nennen wir

79
00:03:37,410 --> 00:03:38,860
‫sie einfach Benutzer.

80
00:03:41,170 --> 00:03:42,823
‫Dann haben wir

81
00:03:44,120 --> 00:03:45,823
‫den Reiseleiter, den leitenden

82
00:03:47,240 --> 00:03:49,043
‫Reiseleiter und den Administrator.

83
00:03:50,410 --> 00:03:53,250
‫Also, ich rufe nur diesen Admin an, in Ordnung?

84
00:03:53,250 --> 00:03:56,359
‫Und diese Benutzerrollen, die wir hier haben, sind

85
00:03:56,359 --> 00:03:59,450
‫natürlich spezifisch für die Domäne der Anwendung.

86
00:03:59,450 --> 00:04:02,260
‫Wenn Sie beispielsweise eine Community-Site betreiben, ist es

87
00:04:02,260 --> 00:04:03,840
‫nicht sinnvoll, einen

88
00:04:03,840 --> 00:04:05,940
‫Leitfaden und einen Lead-Leitfaden zu haben.

89
00:04:05,940 --> 00:04:08,570
‫Stattdessen werden Sie wahrscheinlich

90
00:04:08,570 --> 00:04:11,700
‫Moderatoren oder Mitwirkende oder Mitglieder haben.

91
00:04:11,700 --> 00:04:13,740
‫Sie werden also immer unterschiedliche Namen

92
00:04:13,740 --> 00:04:16,680
‫haben, abhängig von der Art der Anwendung, die Sie schreiben.

93
00:04:16,680 --> 00:04:19,023
‫Aber in unserem Fall macht das Sinn.

94
00:04:21,290 --> 00:04:24,170
‫Dann wollen wir hier auch einen Standard setzen,

95
00:04:24,170 --> 00:04:26,540
‫damit wir eigentlich nicht immer

96
00:04:26,540 --> 00:04:29,080
‫angeben müssen, welchen Benutzertyp wir erstellen.

97
00:04:29,080 --> 00:04:32,320
‫Der Benutzer, sagen wir, der normale

98
00:04:32,320 --> 00:04:35,220
‫Benutzer, wird standardmäßig erstellt.

99
00:04:35,220 --> 00:04:36,990
‫Lassen Sie uns nun

100
00:04:36,990 --> 00:04:39,340
‫tatsächlich die Benutzer löschen, die wir

101
00:04:39,340 --> 00:04:41,021
‫bereits haben, da

102
00:04:41,021 --> 00:04:45,713
‫sie keine Rollen haben und wir sie daher nicht mehr benötigen.

103
00:04:47,780 --> 00:04:48,810
‫Gut.

104
00:04:48,810 --> 00:04:50,260
‫Und so lassen Sie

105
00:04:50,260 --> 00:04:52,630
‫uns eigentlich auch weitermachen und einige neue erstellen.

106
00:04:52,630 --> 00:04:55,980
‫Also, ich melde mich hier als hello@jonas an,

107
00:04:58,610 --> 00:05:03,610
‫und das wird jetzt ein normaler Benutzer sein, und jetzt konnten wir keine

108
00:05:04,180 --> 00:05:06,060
‫Antwort bekommen, und das

109
00:05:06,060 --> 00:05:09,320
‫liegt natürlich daran, dass wir hier diesen Fehler

110
00:05:09,320 --> 00:05:13,083
‫haben, und so, lass uns sehr Entferne schnell diese Codezeile.

111
00:05:14,750 --> 00:05:16,050
‫Und jetzt ist der Fehler weg.

112
00:05:17,326 --> 00:05:19,400
‫Und jetzt sollte es

113
00:05:19,400 --> 00:05:22,000
‫laufen, und tatsächlich haben wir jetzt

114
00:05:22,000 --> 00:05:25,120
‫diesen Benutzer mit der Rolle des Benutzers, okay?

115
00:05:25,120 --> 00:05:26,293
‫Das ist also unsere

116
00:05:27,920 --> 00:05:29,883
‫Standardeinstellung, aber jetzt erstellen wir hier einen Administrator.

117
00:05:30,860 --> 00:05:32,330
‫Und um das wirklich klar

118
00:05:32,330 --> 00:05:34,630
‫zu machen, fügen wir es auch hier in die

119
00:05:34,630 --> 00:05:36,780
‫E-Mail ein, und jetzt müssen wir die Rolle wirklich

120
00:05:40,100 --> 00:05:41,603
‫spezifizieren und diese auf admin setzen.

121
00:05:42,860 --> 00:05:47,360
‫Senden Sie das, und jetzt haben wir unseren Systemadministrator hier.

122
00:05:47,360 --> 00:05:48,193
‫Cool.

123
00:05:48,193 --> 00:05:52,930
‫Gehen wir also hierher zurück, setzen wir diesen Code tatsächlich wieder ein, und wir

124
00:05:52,930 --> 00:05:55,210
‫werden es jetzt so gestalten, dass

125
00:05:55,210 --> 00:05:58,360
‫wir tatsächlich mehrere Argumente an dieses einschränkenTo übergeben können.

126
00:05:58,360 --> 00:06:01,220
‫Ich möchte also, dass der Admin Touren löschen kann, aber

127
00:06:01,220 --> 00:06:02,974
‫auch einen Guide löschen kann.

128
00:06:02,974 --> 00:06:04,000
‫Gut?

129
00:06:04,000 --> 00:06:05,750
‫Und das fügen wir auch hier hinzu.

130
00:06:08,070 --> 00:06:09,130
‫Okay?

131
00:06:09,130 --> 00:06:12,210
‫Der Admin und der leitende Guide können also jetzt

132
00:06:12,210 --> 00:06:16,200
‫Touren löschen, aber nicht die normalen Guides und auch nicht die normalen Benutzer.

133
00:06:16,200 --> 00:06:17,140
‫Gut?

134
00:06:17,140 --> 00:06:20,220
‫So wird also restrikto funktionieren, lassen Sie uns

135
00:06:20,220 --> 00:06:22,423
‫jetzt fortfahren und es implementieren.

136
00:06:25,270 --> 00:06:28,563
‫Also Exporte. einschränkenTo, und

137
00:06:30,470 --> 00:06:34,120
‫wie wollen wir das nun konkret umsetzen?

138
00:06:34,120 --> 00:06:36,510
‫Denn normalerweise können wir keine

139
00:06:36,510 --> 00:06:38,910
‫Argumente an eine Middleware-Funktion übergeben, oder?

140
00:06:38,910 --> 00:06:41,010
‫Aber in diesem Fall wollen wir es wirklich.

141
00:06:41,010 --> 00:06:42,640
‫Wir wollen die

142
00:06:42,640 --> 00:06:46,100
‫Rollen übergeben, die auf die Ressource zugreifen dürfen, oder?

143
00:06:46,100 --> 00:06:48,800
‫Also in diesem Fall der Admin und der Lead Guide.

144
00:06:48,800 --> 00:06:51,940
‫Wir brauchen also eine Möglichkeit, Argumente grundsätzlich auf eine

145
00:06:51,940 --> 00:06:54,050
‫Weise an die Middleware-Funktion zu übergeben,

146
00:06:54,050 --> 00:06:55,830
‫die normalerweise nicht funktioniert.

147
00:06:55,830 --> 00:06:57,658
‫Also, wie wollen wir das machen?

148
00:06:57,658 --> 00:07:00,600
‫Nun, hier werden wir tatsächlich eine

149
00:07:00,600 --> 00:07:03,410
‫Wrapper-Funktion erstellen, die dann die

150
00:07:03,410 --> 00:07:07,033
‫Middleware-Funktion zurückgibt, die wir eigentlich erstellen möchten, okay?

151
00:07:08,070 --> 00:07:10,540
‫Dies ist also die Funktion restriktivTo, und

152
00:07:10,540 --> 00:07:12,160
‫hier möchten wir eine

153
00:07:12,160 --> 00:07:14,150
‫beliebige Anzahl von Argumenten übergeben.

154
00:07:14,150 --> 00:07:15,870
‫Also im Grunde von Rollen.

155
00:07:15,870 --> 00:07:18,196
‫Und so können wir die restliche

156
00:07:18,196 --> 00:07:20,793
‫Parametersyntax verwenden, die in ES6 wieder neu ist,

157
00:07:21,950 --> 00:07:23,240
‫und dies wird

158
00:07:23,240 --> 00:07:26,053
‫dann ein Array aller angegebenen Argumente erstellen, okay?

159
00:07:28,740 --> 00:07:30,350
‫Also erstellen wir diese

160
00:07:30,350 --> 00:07:33,960
‫Funktion und geben dann sofort eine neue Funktion zurück.

161
00:07:33,960 --> 00:07:36,730
‫Und das ist die Middleware-Funktion selbst.

162
00:07:36,730 --> 00:07:40,573
‫Also, Anfrage, Antwort und weiter.

163
00:07:43,000 --> 00:07:43,833
‫Okay?

164
00:07:43,833 --> 00:07:44,890
‫Sinn ergeben?

165
00:07:44,890 --> 00:07:47,190
‫Und so bekommt diese Funktion

166
00:07:47,190 --> 00:07:49,643
‫hier im Grunde dann Zugriff auf den

167
00:07:49,643 --> 00:07:53,310
‫Parameter dieser Rolle hier, weil es eine Schließung gibt, okay?

168
00:07:53,310 --> 00:07:55,780
‫Also, nur als Kommentar hier zur

169
00:07:55,780 --> 00:07:58,160
‫Erklärung, Rollen ist ein Array.

170
00:07:58,160 --> 00:08:01,338
‫In diesem Fall könnte es

171
00:08:01,338 --> 00:08:06,338
‫sich also beispielsweise um Admin und Lead Guide handeln, okay?

172
00:08:08,670 --> 00:08:12,490
‫Wann geben wir einem Benutzer Zugriff auf eine bestimmte Route?

173
00:08:12,490 --> 00:08:15,410
‫Nun, im Grunde, wenn sich seine

174
00:08:15,410 --> 00:08:19,900
‫Benutzerrolle in diesem Rollen-Array befindet, das wir übergeben haben, oder?

175
00:08:19,900 --> 00:08:21,930
‫Nehmen wir an, wir haben jetzt

176
00:08:21,930 --> 00:08:24,930
‫den normalen Benutzer, der die Rolle einfach Benutzer hat, also

177
00:08:24,930 --> 00:08:26,300
‫schreiben wir es hier.

178
00:08:26,300 --> 00:08:29,397
‫Rolle ist jetzt nur Benutzer.

179
00:08:29,397 --> 00:08:32,520
‫Im Grunde ist es also nicht in

180
00:08:32,520 --> 00:08:36,490
‫diesem Array enthalten, und daher hat dieser Benutzer keine Berechtigung, okay?

181
00:08:36,490 --> 00:08:38,320
‫Also schreiben wir das in Code.

182
00:08:38,320 --> 00:08:39,670
‫Es ist eigentlich ganz einfach.

183
00:08:40,650 --> 00:08:45,650
‫Also, wenn nicht Rollen. include, und okay, noch

184
00:08:47,072 --> 00:08:50,660
‫einmal include ist eine sehr schöne Array-Methode, die

185
00:08:50,660 --> 00:08:54,850
‫in Java Script auf allen Arrays verfügbar ist, okay?

186
00:08:54,850 --> 00:08:57,010
‫Wenn dieses Rollen-Array die Rolle

187
00:08:57,010 --> 00:08:58,900
‫des aktuellen Benutzers nicht

188
00:08:58,900 --> 00:09:01,800
‫enthält, erteilen wir diesem Benutzer keine Berechtigung.

189
00:09:01,800 --> 00:09:04,740
‫Und wo wird die Rolle des aktuellen Benutzers gespeichert?

190
00:09:04,740 --> 00:09:07,247
‫Nun, erinnern wir uns an die Codezeile, die wir

191
00:09:07,247 --> 00:09:09,394
‫hier tatsächlich eingefügt haben, ganz am Ende,

192
00:09:09,394 --> 00:09:11,620
‫wo wir den Zugriff auf die geschützte

193
00:09:11,620 --> 00:09:12,900
‫Route gewähren, speichern

194
00:09:12,900 --> 00:09:16,460
‫wir den aktuellen Benutzer auf Anfrage. Nutzer.

195
00:09:16,460 --> 00:09:18,520
‫Und denken Sie daran,

196
00:09:18,520 --> 00:09:21,929
‫dass diese Protect-Middleware immer vor restriktiv ausgeführt wird, richtig?

197
00:09:21,929 --> 00:09:25,330
‫Hier haben wir also zuerst protect

198
00:09:25,330 --> 00:09:27,391
‫und dann restrikto.

199
00:09:27,391 --> 00:09:30,600
‫Wenn also diese Middleware-Funktion hier ausgeführt wird, ist

200
00:09:30,600 --> 00:09:32,660
‫diese bereits abgeschlossen und

201
00:09:32,660 --> 00:09:35,830
‫hat den aktuellen Benutzer auf das Anforderungsobjekt gestellt.

202
00:09:35,830 --> 00:09:38,740
‫Und so können wir das jetzt hier verwenden.

203
00:09:38,740 --> 00:09:42,480
‫Also beantragen. Nutzer. Rolle.

204
00:09:42,480 --> 00:09:45,050
‫Dort wird die Rolle gespeichert.

205
00:09:45,050 --> 00:09:45,953
‫So einfach.

206
00:09:46,950 --> 00:09:50,993
‫In diesem Fall erstellen wir einen neuen Fehler.

207
00:09:52,970 --> 00:09:55,932
‫Also genau wie zuvor, und jetzt

208
00:09:55,932 --> 00:10:00,932
‫sagen wir, dass Sie keine Berechtigung zum Ausführen dieser Aktion haben.

209
00:10:03,680 --> 00:10:07,000
‫Und jetzt ein neuer Statuscode, der 403 ist.

210
00:10:07,000 --> 00:10:09,790
‫Und dieser bedeutet verboten, okay?

211
00:10:09,790 --> 00:10:11,400
‫Es gibt also

212
00:10:11,400 --> 00:10:14,480
‫wirklich einen spezifischen http-Statuscode nur für diesen

213
00:10:14,480 --> 00:10:18,180
‫Fall, also für die Autorisierung im Grunde, in Ordnung?

214
00:10:18,180 --> 00:10:22,423
‫Und, naja, sonst rufen wir einfach als nächstes an.

215
00:10:24,090 --> 00:10:25,580
‫Und das ist es wirklich.

216
00:10:25,580 --> 00:10:27,910
‫So einfach ist es.

217
00:10:27,910 --> 00:10:30,160
‫Fassen wir also kurz zusammen, was wir hier gerade gemacht haben.

218
00:10:31,650 --> 00:10:35,140
‫Hier führen wir also zuerst die Protect-Middleware aus.

219
00:10:35,140 --> 00:10:36,770
‫Dann beschränken Sie sich

220
00:10:36,770 --> 00:10:39,410
‫auf Middleware, und nur wenn diese beiden Middlewares zur

221
00:10:39,410 --> 00:10:41,100
‫nächsten übergehen, gehen wir zur Lead-Tour.

222
00:10:41,100 --> 00:10:42,830
‫Im Grunde ist dieser

223
00:10:42,830 --> 00:10:45,419
‫Route-Handler oder dieser Route-Controller also geschützt und

224
00:10:45,419 --> 00:10:47,790
‫wird auch durch diese Middleware, die

225
00:10:47,790 --> 00:10:49,750
‫wir gerade erstellt haben, eingeschränkt.

226
00:10:49,750 --> 00:10:50,800
‫Dann übergeben

227
00:10:50,800 --> 00:10:52,650
‫wir an diese Funktion

228
00:10:52,650 --> 00:10:55,730
‫alle Rollen, die mit dieser Ressource interagieren dürfen.

229
00:10:55,730 --> 00:10:57,794
‫Also, im Grunde, wer

230
00:10:57,794 --> 00:11:00,310
‫darf diese Handler-Funktion ausführen, okay?

231
00:11:00,310 --> 00:11:03,370
‫Also wird diese Funktion einschränkenTo dann

232
00:11:03,370 --> 00:11:06,910
‫ausgeführt und gibt die Middleware-Funktion selbst zurück, okay?

233
00:11:06,910 --> 00:11:11,140
‫Und diese Middleware-Funktion selbst ist eigentlich diese.

234
00:11:11,140 --> 00:11:13,010
‫Es wird dann

235
00:11:13,010 --> 00:11:16,500
‫aufgrund der Schließung Zugriff auf Rollen haben, okay?

236
00:11:16,500 --> 00:11:19,350
‫Nehmen wir also an, dass die Rolle des aktuellen Benutzers, die

237
00:11:19,350 --> 00:11:24,180
‫in req gespeichert ist, gespeichert ist. Nutzer. Rolle, oder?

238
00:11:24,180 --> 00:11:27,020
‫Nehmen wir an, seine Rolle ist user,

239
00:11:27,020 --> 00:11:29,970
‫und da diese Rolle nicht im Array dieser Rolle

240
00:11:29,970 --> 00:11:32,920
‫enthalten ist, erhalten wir dann diesen Fehler, okay?

241
00:11:32,920 --> 00:11:37,583
‫Und das ist es, was diese Rolle spielt. enthält hier Tests für, okay?

242
00:11:38,450 --> 00:11:40,410
‫Aber wenn es enthalten ist,

243
00:11:40,410 --> 00:11:42,860
‫gehen wir natürlich zur nächsten Middleware über.

244
00:11:42,860 --> 00:11:46,130
‫Was wiederum der Routenhandler selbst ist.

245
00:11:46,130 --> 00:11:46,963
‫Cool.

246
00:11:46,963 --> 00:11:48,120
‫Also ich hoffe das macht Sinn.

247
00:11:48,120 --> 00:11:50,453
‫Lassen Sie uns jetzt loslegen und es schnell testen.

248
00:11:51,390 --> 00:11:52,580
‫Okay?

249
00:11:52,580 --> 00:11:54,340
‫Im Moment haben wir

250
00:11:54,340 --> 00:11:58,420
‫also dieses Token hier, das in der JTW-Variablen gespeichert ist, oder?

251
00:11:58,420 --> 00:12:00,890
‫Erinnern Sie sich also an den letzten Vortrag.

252
00:12:00,890 --> 00:12:03,233
‫Wir befinden uns also in

253
00:12:03,233 --> 00:12:06,230
‫dieser Entwicklungsumgebung und hier ist diese Variable.

254
00:12:06,230 --> 00:12:08,080
‫Also genau der, der hier unten ist.

255
00:12:09,540 --> 00:12:10,373
‫Gut?

256
00:12:10,373 --> 00:12:12,600
‫Wenn wir also jetzt eine

257
00:12:12,600 --> 00:12:16,914
‫Tour löschen würden, müssten wir diese Variable dann dort angeben, oder?

258
00:12:16,914 --> 00:12:19,936
‫Kommen wir also zur Autorisierung, dem Inhaber-Token, und

259
00:12:19,936 --> 00:12:21,970
‫dann legt es ihn

260
00:12:21,970 --> 00:12:24,470
‫eigentlich schon hier für uns ab.

261
00:12:24,470 --> 00:12:25,980
‫Es weiß also bereits,

262
00:12:25,980 --> 00:12:28,480
‫dass dies die ist, die wir verwenden möchten, weil

263
00:12:28,480 --> 00:12:30,544
‫wir sie schon einmal verwendet haben, okay?

264
00:12:30,544 --> 00:12:32,960
‫Nun möchte ich Ihnen zunächst zeigen,

265
00:12:32,960 --> 00:12:36,710
‫dass ein normaler Benutzer eine Tour jetzt nicht löschen kann, okay?

266
00:12:36,710 --> 00:12:40,183
‫Beginnen wir also damit, dass wir uns als normaler Benutzer anmelden.

267
00:12:41,300 --> 00:12:44,253
‫Und das ist Hallo, oder?

268
00:12:45,530 --> 00:12:50,530
‫Denken Sie daran, im Moment haben wir hello@jonas. io, das ist ein normaler Benutzer,

269
00:12:50,670 --> 00:12:54,410
‫und wir haben admin@jonas. io.

270
00:12:54,410 --> 00:12:58,350
‫Und wir haben immer noch dieses alte hier, lass es uns loswerden.

271
00:12:58,350 --> 00:12:59,183
‫Gut.

272
00:12:59,183 --> 00:13:01,803
‫Also fange ich mit hello@jonas an. io.

273
00:13:03,630 --> 00:13:04,650
‫Okay?

274
00:13:04,650 --> 00:13:08,470
‫Wenn Sie sich also anmelden, wird dieses Token in der

275
00:13:08,470 --> 00:13:10,770
‫Umgebungsvariablen gespeichert, und jetzt können

276
00:13:10,770 --> 00:13:12,670
‫wir eine Tour löschen.

277
00:13:13,530 --> 00:13:16,440
‫Wir brauchen jetzt eigentlich auch noch einen Ausweis, also

278
00:13:16,440 --> 00:13:18,940
‫lass uns schnell einen von hier holen,

279
00:13:18,940 --> 00:13:22,063
‫also werden wir im Grunde eine unserer Touren hier löschen.

280
00:13:25,450 --> 00:13:27,420
‫Also verwenden wir hier einfach den letzten.

281
00:13:27,420 --> 00:13:28,683
‫Also der Sternengucker.

282
00:13:31,356 --> 00:13:32,189
‫Okay?

283
00:13:32,189 --> 00:13:35,570
‫Und mal sehen, ob wir unsere Fehlermeldung bekommen.

284
00:13:35,570 --> 00:13:38,290
‫Und tatsächlich sind Sie nicht berechtigt, diese

285
00:13:38,290 --> 00:13:39,620
‫Aktion auszuführen.

286
00:13:39,620 --> 00:13:41,610
‫Also 403.

287
00:13:41,610 --> 00:13:44,823
‫Es funktioniert also tatsächlich, oder?

288
00:13:46,150 --> 00:13:47,630
‫Aber um dies jetzt

289
00:13:47,630 --> 00:13:50,433
‫zu vervollständigen, melden wir uns natürlich als Admin an.

290
00:13:52,830 --> 00:13:53,823
‫Also, Administrator.

291
00:13:55,480 --> 00:13:56,540
‫Anmeldung.

292
00:13:56,540 --> 00:14:00,000
‫Und so wird dieses Token nun in dieser Variable gespeichert.

293
00:14:00,000 --> 00:14:01,500
‫Wenn Sie dies

294
00:14:01,500 --> 00:14:04,910
‫jetzt ausführen, sollten wir die Tour effektiv löschen können.

295
00:14:04,910 --> 00:14:05,743
‫Möchte sehen?

296
00:14:07,720 --> 00:14:09,240
‫Und es ist weg.

297
00:14:09,240 --> 00:14:11,920
‫Wir haben also einen Code von 204, keinen

298
00:14:11,920 --> 00:14:13,999
‫Inhalt, was beim Löschen der Standard

299
00:14:13,999 --> 00:14:16,259
‫ist, aber jetzt, wenn wir alle unsere

300
00:14:16,259 --> 00:14:19,090
‫Touren bekommen, sollten wir hier jetzt eine Zahl acht

301
00:14:19,090 --> 00:14:20,460
‫sehen, also nur

302
00:14:20,460 --> 00:14:24,350
‫acht Ergebnisse, und das bedeutet, dass der letzte jetzt ist weg, okay?

303
00:14:24,350 --> 00:14:26,520
‫Und wie wir gerade bewiesen haben,

304
00:14:26,520 --> 00:14:28,496
‫hat ein Administrator im

305
00:14:28,496 --> 00:14:31,671
‫Moment die Berechtigung, Touren effektiv zu löschen, okay?

306
00:14:31,671 --> 00:14:34,372
‫Und ich kann wirklich nicht

307
00:14:34,372 --> 00:14:38,060
‫genug betonen, wie wichtig dieser Code hier ist.

308
00:14:38,060 --> 00:14:40,980
‫Also im Grunde, woher wir die Rolle des aktuellen

309
00:14:40,980 --> 00:14:43,550
‫Benutzers von der Middleware vorher bekommen, okay?

310
00:14:43,550 --> 00:14:46,804
‫Es ist also wirklich entscheidend, den Benutzer wie

311
00:14:46,804 --> 00:14:48,770
‫hier in der Anfrage

312
00:14:48,770 --> 00:14:52,170
‫zu speichern, damit dieser nächste Schritt tatsächlich funktioniert, okay?

313
00:14:52,170 --> 00:14:55,760
‫Die ID, die im Jason-Webtoken codiert ist, lässt unseren Code also wissen, ob

314
00:14:55,760 --> 00:14:57,990
‫der Benutzer, der die Aktion auszuführen versucht,

315
00:14:57,990 --> 00:15:01,470
‫ein Benutzer ist, oder ob es sich um einen Administrator handelt, oder

316
00:15:01,470 --> 00:15:04,900
‫ob es sich um einen Lead Guide oder was auch immer handelt.

317
00:15:04,900 --> 00:15:06,790
‫Auch hier, weil

318
00:15:06,790 --> 00:15:09,730
‫diese Daten von dieser schützenden Middleware stammen.

319
00:15:09,730 --> 00:15:10,563
‫Toll.

320
00:15:10,563 --> 00:15:13,790
‫Dies war ein weiteres wichtiges

321
00:15:13,790 --> 00:15:17,040
‫Puzzleteil bei der Implementierung unseres Authentifizierungsworkflows hier.

322
00:15:17,040 --> 00:15:19,821
‫Und natürlich möchten Sie viele

323
00:15:19,821 --> 00:15:23,479
‫andere Routen einschränken, zum Beispiel hier aktualisieren, okay?

324
00:15:23,479 --> 00:15:25,300
‫Aber das überlasse ich

325
00:15:25,300 --> 00:15:27,320
‫einem späteren Zeitpunkt des Kurses, okay?

326
00:15:27,320 --> 00:15:29,420
‫Hier wollte ich Ihnen nur

327
00:15:29,420 --> 00:15:31,663
‫zeigen, wie das alles funktioniert, okay?

328
00:15:32,730 --> 00:15:35,600
‫Also, ich glaube, das ist mir gelungen.

329
00:15:35,600 --> 00:15:38,620
‫Ich hoffe, Sie haben verstanden, wie dies

330
00:15:38,620 --> 00:15:41,668
‫funktioniert, und wenn nicht, können Sie natürlich jederzeit

331
00:15:41,668 --> 00:15:44,300
‫eine Frage im offiziellen Q-und-A-Bereich stellen.

332
00:15:44,300 --> 00:15:47,840
‫Wie auch immer, es kommen gerade noch einige weitere großartige Inhalte

333
00:15:47,840 --> 00:15:49,483
‫und so gehen wir weiter.

