1
00:00:03,890 --> 00:00:11,670
الآن بعد أن فهمنا المصادقة المستندة إلى الرمز المميز باستخدام رموز JSON Web Tokens،

2
00:00:11,670 --> 00:00:16,035
وفهمنا أيضًا مزايا استخدام هذا الأسلوب.

3
00:00:16,035 --> 00:00:22,185
حقيقة أننا نقوم الآن ببناء خادم قائم على واجهة برمجة تطبيقات Rest،

4
00:00:22,185 --> 00:00:24,420
في هذه الدورة يعني

5
00:00:24,420 --> 00:00:27,585
أن المصادقة المستندة إلى JSON Web Token

6
00:00:27,585 --> 00:00:31,410
هي الأكثر ملاءمة لهذا الخادم الذي نقوم ببنائه.

7
00:00:31,410 --> 00:00:40,585
لذا، دعنا نقوم بتحديث خادم واجهة برمجة تطبيقات Rest الخاص بنا للاستفادة من رموز JSON Web Tokens في هذا التمرين.

8
00:00:40,585 --> 00:00:45,755
لبدء تحديث الخادم في المحطة الطرفية الخاصة بك،

9
00:00:45,755 --> 00:00:51,935
دعونا أولا تثبيت جسون ويب توكين وجواز السفر وحدة عقدة جوت.

10
00:00:51,935 --> 00:00:56,445
لذلك، في موجه نوع npm، تثبيت،

11
00:00:56,445 --> 00:01:05,640
جواز سفر JWT JSON Web Token وناقص حفظ.

12
00:01:05,640 --> 00:01:15,435
كما ترون، أنا باستخدام جسون ويب توكين 8.3.0 وجواز السفر جوت 4.0.0 في هذه الدورة.

13
00:01:15,435 --> 00:01:23,180
الآن بعد أن أكملنا التثبيت دعونا المضي قدما وتحديث الخادم السريع لدينا.

14
00:01:23,180 --> 00:01:25,700
الذهاب الآن إلى التعليمات البرمجية لدينا،

15
00:01:25,700 --> 00:01:30,289
دعونا إضافة في ملف اسمه

16
00:01:30,289 --> 00:01:36,335
conflict.js في المجلد الجذر من مشروعنا.

17
00:01:36,335 --> 00:01:39,455
الآن، هذا الملف conflict.js أنا ذاهب

18
00:01:39,455 --> 00:01:43,220
لاستخدامه لتخزين بعض معلومات التكوين لخادمنا.

19
00:01:43,220 --> 00:01:49,790
الآن، هذه طريقة لمركزية كل التكوين لخادمنا.

20
00:01:49,790 --> 00:01:53,600
في هذا الملف conflict.js،

21
00:01:53,600 --> 00:01:59,825
اسمحوا لي تصدير كائن جسون هنا.

22
00:01:59,825 --> 00:02:02,490
لذلك سنقول، SecretKey،

23
00:02:08,510 --> 00:02:11,550
وهذا هو المكان الذي

24
00:02:19,450 --> 00:02:28,705
سأحدد المفتاح السري الذي سأستخدمه لتوقيع JSON Web Token،

25
00:02:28,705 --> 00:02:36,700
واسمحوا لي أيضًا بتحديد عنوان URL Mongo هنا،

26
00:02:36,700 --> 00:02:41,275
والذي سيكون عنوان URL

27
00:02:41,275 --> 00:02:51,710
لخادم MongoDB المحلي 27017.

28
00:02:52,200 --> 00:02:55,060
بمجرد الانتهاء من ذلك،

29
00:02:55,060 --> 00:02:59,260
ثم سنذهب إلى ملف authenticate.js،

30
00:02:59,260 --> 00:03:01,780
وفي ملف authenticate.js سنقوم

31
00:03:01,780 --> 00:03:10,700
الآن بإنشاء استراتيجية JWT.

32
00:03:11,250 --> 00:03:16,175
هذه هي استراتيجية رمز الويب JSON التي يتم توفيرها من قبل

33
00:03:16,175 --> 00:03:25,830
وحدة عقدة JWT جواز سفرنا التي قمنا بتضمينها للتو، وهكذا سنقول،

34
00:03:26,300 --> 00:03:32,895
جواز سفر استراتيجية العمومية generativity.strategy.

35
00:03:32,895 --> 00:03:35,370
سيوفر لنا هذا

36
00:03:35,370 --> 00:03:40,550
استراتيجية تستند إلى JSON Web Token لتكوين وحدة جواز السفر الخاصة بنا،

37
00:03:40,550 --> 00:03:46,820
ثم استخراج JWT، والتي

38
00:03:46,820 --> 00:03:53,745
سأحصل عليها أيضًا من جواز السفر JWT.

39
00:03:53,745 --> 00:03:55,935
سنحتاج إلى جواز سفر JWT،

40
00:03:55,935 --> 00:03:59,565
ثم سنقول «استخراج JWT».

41
00:03:59,565 --> 00:04:02,655
ثم دعونا استيراد

42
00:04:02,655 --> 00:04:10,240
وحدة JSON Web Token

43
00:04:10,240 --> 00:04:12,265
التي قمنا بتثبيتها للتو.

44
00:04:12,265 --> 00:04:15,340
مرة واحدة لدينا استيراد هذه،

45
00:04:15,340 --> 00:04:18,370
دعونا المضي قدما والبدء في تكوين بعض الأشياء.

46
00:04:18,370 --> 00:04:26,205
جنبا إلى جنب مع هذه، اسمحوا لي استيراد التكوين الذي قمت

47
00:04:26,205 --> 00:04:35,840
بإنشاء ملف config.js الذي قمت بإضافته للتو إلى مشروعي.

48
00:04:35,840 --> 00:04:40,100
بمجرد الانتهاء من هذا ثم اسمحوا لي أن المضي قدما

49
00:04:40,100 --> 00:04:45,650
وتقديم بعض الوظائف الإضافية التي سوف تصدير من هنا.

50
00:04:45,650 --> 00:04:49,200
سنقول، Exports.getToken،

51
00:04:55,160 --> 00:05:02,840
هذه الوظيفة عند العرض بمعلمة هناك والتي سوف اتصل ببساطة بالمستخدم،

52
00:05:02,840 --> 00:05:06,335
والذي سيكون كائن JSON،

53
00:05:06,335 --> 00:05:10,145
سيؤدي ذلك إلى إنشاء الرمز المميز وإعطائه لنا.

54
00:05:10,145 --> 00:05:16,685
لإنشاء الرمز المميز، سنستخدم وحدة jsonwebtoken التي قمنا باستيرادها للتو.

55
00:05:16,685 --> 00:05:22,140
لذلك، هنا سوف نقول العودة JWT.Sign،

56
00:05:23,750 --> 00:05:31,355
وهذا يساعدنا على إنشاء JSON Web Token وحتى داخل ذلك

57
00:05:31,355 --> 00:05:34,430
سيسمح لي بتزويد

58
00:05:34,430 --> 00:05:38,825
الحمولة والحمولة هنا تأتي كمعلمة هنا تسمى المستخدم،

59
00:05:38,825 --> 00:05:42,620
ثم المعلمة الثانية هي

60
00:05:42,620 --> 00:05:51,050
المفتاح السري أو الخاص الذي أحصل عليه من التكوين. المفتاح السري،

61
00:05:51,050 --> 00:05:55,260
الذي قمت بتهيئته في وقت سابق قليلاً.

62
00:05:55,630 --> 00:06:02,835
يمكننا توفير خيارات إضافية هنا.

63
00:06:02,835 --> 00:06:07,055
أحد الخيارات التي سأقوم بتوفيرها لهذا هو

64
00:06:07,055 --> 00:06:09,410
حسنا، اسمحوا لي أن انتقل إلى السطر التالي هنا،

65
00:06:09,410 --> 00:06:14,160
والخيار الذي سوف توريد هو إكسيبريسين.

66
00:06:14,530 --> 00:06:20,945
سيخبرك ExpireSin كم من الوقت سيكون jsonwebtoken

67
00:06:20,945 --> 00:06:27,185
صالحًا حتى في هذه الحالة أقول 3،600 يعني 3،600 ثانية أو حوالي ساعة.

68
00:06:27,185 --> 00:06:32,825
بعد ساعة سيكون لديك لتجديد jsonwebtoken.

69
00:06:32,825 --> 00:06:36,790
ساعة طويلة بما فيه الكفاية بالنسبة لنا لتكون قادرة على اختبار طلبنا.

70
00:06:36,790 --> 00:06:40,370
يمكنك تعيين هذا ليكون أطول بكثير إذا اخترت.

71
00:06:40,370 --> 00:06:45,110
في تطبيق حقيقي، يمكنك تعيين هذا ليكون قيمة أطول بكثير ربما

72
00:06:45,110 --> 00:06:50,075
بضعة أيام، ونتوقع من المستخدم إعادة مصادقة نفسه كل بضعة أيام.

73
00:06:50,075 --> 00:06:52,670
الآن، سنقوم أيضًا بتكوين

74
00:06:52,670 --> 00:06:58,025
الاستراتيجية المستندة إلى jsonwebtoken لتطبيق جواز السفر الخاص بنا.

75
00:06:58,025 --> 00:07:02,900
لذلك، اسمحوا لي أن أعلن متغير يسمى opts،

76
00:07:02,900 --> 00:07:12,140
والتي ليست سوى الخيارات التي أنا ذاهب لتحديد لاستراتيجية بلدي جوت القائمة.

77
00:07:12,140 --> 00:07:18,905
لذلك سنقول اختيارات جوتفرومركست.

78
00:07:18,905 --> 00:07:22,925
الآن يحدد هذا الخيار

79
00:07:22,925 --> 00:07:28,580
كيف يجب استخراج jsonwebtoken من رسالة الطلب الواردة.

80
00:07:28,580 --> 00:07:33,755
هذا هو المكان الذي سوف نستخدم استخراج JWT.

81
00:07:33,755 --> 00:07:39,290
يدعم هذا المستخرج JWT أساليب مختلفة

82
00:07:39,290 --> 00:07:44,970
لاستخراج المعلومات من الرأس.

83
00:07:44,970 --> 00:07:49,580
سيقول من AuthHeader من AuthHeader كرمز حامل،

84
00:07:49,580 --> 00:07:51,510
من رأس المخطط وما إلى ذلك.

85
00:07:51,510 --> 00:07:54,380
إذا قرأت الوثائق،

86
00:07:54,380 --> 00:07:58,040
فستخبرك بطرق مختلفة لاستخراج jsonwebtoken.

87
00:07:58,040 --> 00:08:00,770
يمكنك تمرير الرمز المميز في نص

88
00:08:00,770 --> 00:08:04,970
رسالة الطلب الواردة ومن ثم يمكنك استخراجه من هناك،

89
00:08:04,970 --> 00:08:08,255
يمكنك أيضا استخدام المستخلصات المخصصة وهلم جرا.

90
00:08:08,255 --> 00:08:14,180
في هذه الدورة، سأستخدم أبسط طريقة تسمى

91
00:08:14,180 --> 00:08:20,745
من رأس المصادقة كرمز حامل.

92
00:08:20,745 --> 00:08:22,220
نحن بالفعل

93
00:08:22,220 --> 00:08:25,055
على دراية رأس المصادقة لأننا كنا نستخدم ذلك مع

94
00:08:25,055 --> 00:08:30,440
المصادقة الأساسية والمصادقة المستندة إلى ملف تعريف الارتباط في وقت سابق.

95
00:08:30,440 --> 00:08:32,180
لذا، سأقوم فقط باستخدام

96
00:08:32,180 --> 00:08:38,350
حقل الرأس نفسه في رسالة الطلب لحمل jsonwebtoken.

97
00:08:38,350 --> 00:08:45,270
لذلك سأقول اختيارات كما جسونوبتوكين رمزية حامل.

98
00:08:45,270 --> 00:08:51,160
التالي الذي سنقول Opts.SecretorKey،

99
00:08:56,980 --> 00:09:02,795
هذه هي المعلمة الثانية التي تساعدني على

100
00:09:02,795 --> 00:09:11,670
توفير المفتاح السري الذي سأستخدمه ضمن استراتيجيتي لتسجيل الدخول.

101
00:09:11,670 --> 00:09:15,875
لذلك هذا هو الخيار الآخر الذي سأقوم بتحديده هنا.

102
00:09:15,875 --> 00:09:18,065
مرة واحدة أنا تحديد هذين،

103
00:09:18,065 --> 00:09:26,390
اسمحوا لي تصدير استراتيجية جواز السفر

104
00:09:26,390 --> 00:09:30,680
التي أنا ذاهب لتكوين هنا لذلك سنقول ExportJWTPassport،

105
00:09:30,680 --> 00:09:34,355
ثم سنقول passport.use.

106
00:09:34,355 --> 00:09:37,940
تذكر الطريقة التي حددت بها الاستراتيجية المحلية في وقت سابق.

107
00:09:37,940 --> 00:09:42,035
نحن هنا نحدد الاستراتيجية القائمة على JWT،

108
00:09:42,035 --> 00:09:47,895
ثم سننشئ استراتيجية JWT جديدة،

109
00:09:47,895 --> 00:09:51,320
ونذكر أننا استوردنا للتو استراتيجية JWT

110
00:09:51,320 --> 00:09:56,615
هنا وهذا هو ما سنستخدمه لإنشاء استراتيجية جديدة.

111
00:09:56,615 --> 00:10:01,235
تأخذ استراتيجية JWT هذه

112
00:10:01,235 --> 00:10:07,675
كائن الخيارات الذي قمت بإنشائه للتو كمعلمة أولى.

113
00:10:07,675 --> 00:10:14,210
خيارات الاستراتيجية والثانية هي وظيفة التحقق التي أحتاج إلى توفيرها،

114
00:10:14,210 --> 00:10:18,050
وبالتالي فإن وظيفة التحقق سأقوم بتزويدها في السطر التالي هنا،

115
00:10:18,050 --> 00:10:28,545
سنقول FunctionJWT_Payload.

116
00:10:28,545 --> 00:10:33,900
انتهيت لذلك، عندما يتم استدعاء هذه الوظيفة،

117
00:10:33,900 --> 00:10:39,270
يتم القيام به هو رد الاتصال الذي يتم توفيره من قبل جواز السفر.

118
00:10:39,270 --> 00:10:44,270
لذلك، كلما كان لديك جواز سفر تقوم بتكوين مع استراتيجية جديدة،

119
00:10:44,270 --> 00:10:46,750
تحتاج إلى توفير المعلمة الثانية القيام به.

120
00:10:46,750 --> 00:10:48,460
من خلال هذه المعلمة المنجزة،

121
00:10:48,460 --> 00:10:52,235
سوف تقوم بتمرير المعلومات إلى جواز السفر الذي

122
00:10:52,235 --> 00:10:57,780
ستستخدمه بعد ذلك لتحميل الأشياء على رسالة الطلب.

123
00:10:57,780 --> 00:11:00,710
لذلك، عندما يوزع جواز السفر رسالة الطلب،

124
00:11:00,710 --> 00:11:04,110
فإنه سيستخدم الاستراتيجية ثم استخراج المعلومات،

125
00:11:04,110 --> 00:11:09,540
ومن ثم تحميله على رسالة طلبنا.

126
00:11:09,540 --> 00:11:13,905
لذلك، بما أن هذا يحدث أن تكون وظيفة،

127
00:11:13,905 --> 00:11:19,795
وأنا مجرد الذهاب إلى استخدام وظيفة السهم هنا،

128
00:11:19,795 --> 00:11:22,160
لقد حصلت مولعا وظائف الأسهم.

129
00:11:22,160 --> 00:11:25,650
لذلك، اسمحوا لي أن خلق ذلك كوظيفة السهم هنا،

130
00:11:25,650 --> 00:11:28,345
وداخل هذه الوظيفة،

131
00:11:28,345 --> 00:11:30,465
ونحن سوف تحدد وظيفة.

132
00:11:30,465 --> 00:11:32,970
لذا، ماذا نفعل داخل الوظيفة؟

133
00:11:32,970 --> 00:11:37,420
اسمحوا لي أن أفعل console.log من

134
00:11:38,370 --> 00:11:44,020
حمولة JWT ثم

135
00:11:44,660 --> 00:11:49,995
اسمحوا لي فقط تسجيل الخروج من الخيار القادم هنا،

136
00:11:49,995 --> 00:11:51,770
خيار حمولة JWT القادمة هنا،

137
00:11:51,770 --> 00:11:55,420
بحيث يمكنك أن ترى ما هو داخل حمولة JWT.

138
00:11:55,420 --> 00:12:04,250
ثم، سوف نبحث عن مستخدم عن طريق قول user.Findone،

139
00:12:04,250 --> 00:12:14,020
ثم أعرف أنه في jwt.payload،

140
00:12:14,020 --> 00:12:17,210
هناك حقل معرف الذي يأتي في.

141
00:12:17,210 --> 00:12:21,360
لذلك، هذا هو ما سأقوم بتعيينه كحقل معرف هنا.

142
00:12:21,360 --> 00:12:26,040
لذلك، سأقول، user.Findone والثاني

143
00:12:26,040 --> 00:12:36,190
هو وظيفة رد الاتصال.

144
00:12:36,870 --> 00:12:45,295
كما تدرك، هذا المستخدم طريقة النمس ومحاولة العثور عليها.

145
00:12:45,295 --> 00:12:54,665
لذلك، سنقول إذا أخطأت ثم، العودة القيام به.

146
00:12:54,665 --> 00:12:57,945
ماذا فعل هذا؟ هذا هو رد الاتصال أن

147
00:12:57,945 --> 00:13:02,155
جواز السفر سوف تمر في استراتيجيتك هنا.

148
00:13:02,155 --> 00:13:04,965
لذلك، نحن ذاهبون إلى أن ندعو هذه الوظيفة القيام به.

149
00:13:04,965 --> 00:13:11,200
هذا القيام به في جواز السفر يأخذ ثلاث معلمات.

150
00:13:12,890 --> 00:13:20,400
لذلك، يمكنك أن ترى ثلاث قطع من المعلومات هذا القيام به يتوقع أنه يقول، خطأ: أي.

151
00:13:20,400 --> 00:13:24,525
لذلك، إذا كان لديك خطأ، فستمرره كمعلمة أولى.

152
00:13:24,525 --> 00:13:26,495
المعلمة الثانية، المستخدم؟ ،

153
00:13:26,495 --> 00:13:28,245
إذا كان المستخدم موجودًا،

154
00:13:28,245 --> 00:13:33,770
فسيتم تمرير قيمة المستخدم ثم إذا كانت هناك أي معلومات؟ :, أي.

155
00:13:33,770 --> 00:13:37,100
لذا، فإن هذين معلمتين اختياريتين وهكذا،

156
00:13:37,100 --> 00:13:38,690
إذا قمت بتمرير أي معلومات،

157
00:13:38,690 --> 00:13:42,145
فسيتم استخدام ذلك داخل التطبيق.

158
00:13:42,145 --> 00:13:44,650
إذا قمت بتمرير false كمعلمة ثانية،

159
00:13:44,650 --> 00:13:47,515
فهذا يعني أن المستخدم غير موجود أو ذلك.

160
00:13:47,515 --> 00:13:50,810
لذلك، سوف يفسر أن المستخدم غير موجود.

161
00:13:50,810 --> 00:13:52,335
لذا، يمكنني القول، خطأ،

162
00:13:52,335 --> 00:13:54,900
خطأ، لأن هذا خطأ.

163
00:13:54,900 --> 00:13:58,080
لذلك، أنا لن تمر في قيمة المستخدم هناك،

164
00:13:58,080 --> 00:14:00,660
أنا فقط ذاهب لتمرير في false.

165
00:14:00,660 --> 00:14:06,040
هناك، التالي،

166
00:14:06,040 --> 00:14:11,510
يمكننا أن نقول، آخر إذا (المستخدم).

167
00:14:11,510 --> 00:14:15,860
لذلك، إذا لم يكن المستخدم فارغًا،

168
00:14:15,860 --> 00:14:18,960
فسنقول العودة (خالية).

169
00:14:19,230 --> 00:14:22,210
لا يوجد خطأ لذلك، ستكون المعلمة الأولى

170
00:14:22,210 --> 00:14:25,080
فارغة والمعلمة الثانية هي المستخدم،

171
00:14:25,080 --> 00:14:29,895
لكننا وصلنا للتو من MongoDB.

172
00:14:29,895 --> 00:14:35,445
خلاف ذلك، سوف نعود

173
00:14:35,445 --> 00:14:41,395
القيام به مع فارغة، كاذبة.

174
00:14:41,395 --> 00:14:43,650
لذلك، في الحالة الأخيرة،

175
00:14:43,650 --> 00:14:45,100
لم نتمكن من العثور على المستخدم،

176
00:14:45,100 --> 00:14:47,120
لذلك نحن ذاهبون إلى أن تمر في كاذبة.

177
00:14:47,120 --> 00:14:50,200
لذلك، نحن ذاهبون إلى التعامل مع الأمر مثل هذا.

178
00:14:50,200 --> 00:14:53,345
إذا كنت تريد، يمكنك إنشاء حساب مستخدم جديد في هذه المرحلة

179
00:14:53,345 --> 00:14:58,365
ولكن أنا ذاهب للحفاظ على هذا بسيط فقط بحيث أنه من السهل بالنسبة لنا أن نفهم.

180
00:14:58,365 --> 00:15:00,810
لذا، نحن سَنَقُولُ فقط، لاغية، كاذبة. هذه ستّة

181
00:15:00,810 --> 00:15:07,475
لذا، هذه هي استراتيجية جواز سفر JsonWebToken التي قمت بتهيئتها هنا للتو.

182
00:15:07,475 --> 00:15:11,420
أيضا، اسمحوا لي تصدير

183
00:15:11,420 --> 00:15:19,450
وظيفة واحدة أخرى من هنا تسمى فيريفيوسر.

184
00:15:19,450 --> 00:15:21,110
الآن، هذه الوظيفة فيريفيوسر،

185
00:15:21,110 --> 00:15:24,935
وأنا ذاهب لاستخدامه للتحقق من مستخدم وارد.

186
00:15:24,935 --> 00:15:28,810
لذا، هذا هو المكان الذي سأستخدم فيه passport.authenticate.

187
00:15:28,890 --> 00:15:36,440
لذا، فإن passport.authenticate، فإن الاستراتيجية هي استراتيجية jwt التي قمت بتهيئتها للتو،

188
00:15:36,440 --> 00:15:39,490
واستراتيجية JsonWebToken التي قمت بتكوين للتو.

189
00:15:39,490 --> 00:15:41,625
ثم، الجزء الثاني،

190
00:15:41,625 --> 00:15:46,305
أود أن أقول، جلسة: كاذبة.

191
00:15:46,305 --> 00:15:47,740
لذا، هذا يعني

192
00:15:47,740 --> 00:15:51,305
أننا لن نخلق جلسات في هذه الحالة.

193
00:15:51,305 --> 00:15:58,215
كما تتذكر، تطبيق معكوس،

194
00:15:58,215 --> 00:16:00,530
نحن نستخدم المصادقة المستندة إلى الرمز المميز.

195
00:16:00,530 --> 00:16:02,435
لذلك نحن لن نكون خلق جلسات.

196
00:16:02,435 --> 00:16:07,690
لذلك، لهذا السبب قمت بتعيين جلسة الخيار هذه إلى false هنا

197
00:16:07,690 --> 00:16:11,795
، وبالطبع، حدد أول واحد الاستراتيجية التي سأستخدمها.

198
00:16:11,795 --> 00:16:14,050
لذلك، للتحقق من مستخدم،

199
00:16:14,050 --> 00:16:15,930
وسوف تستخدم استراتيجية جوت.

200
00:16:15,930 --> 00:16:18,110
كيف تعمل استراتيجية JWT؟

201
00:16:18,110 --> 00:16:20,540
في الطلب الوارد،

202
00:16:21,040 --> 00:16:26,845
سيتم تضمين الرمز المميز في رأس المصادقة كما رأينا هنا.

203
00:16:26,845 --> 00:16:29,950
قلنا رأس المصادقة كرمز حامل.

204
00:16:29,950 --> 00:16:33,530
إذا تم تضمين ذلك، فسيتم استخراجه وسيتم

205
00:16:33,530 --> 00:16:38,210
استخدامه لمصادقة المستخدم استنادًا إلى الرمز المميز.

206
00:16:38,210 --> 00:16:47,770
تصحيح طفيف هنا، يجب أن يكون هذا المستخدم. findone_id يساوي jwt_payload. _id،

207
00:16:47,770 --> 00:16:56,475
لأن هذه هي قيمة المعرف الموجودة داخل حمولة JsonWebToken الخاصة بي.

208
00:16:56,475 --> 00:17:01,615
لذلك، نحن نبحث عن المستخدم مع هذا المعرف المعطى.

209
00:17:01,615 --> 00:17:06,170
لذلك، بمجرد الانتهاء من هذا، ثم الآن،

210
00:17:06,170 --> 00:17:11,790
الجزء الثاني الذي نحتاج إلى القيام به هو أننا بحاجة إلى إنشاء الرمز المميز في مكان ما.

211
00:17:11,790 --> 00:17:14,005
الآن، أين نقوم بإنشاء الرمز المميز؟

212
00:17:14,005 --> 00:17:20,290
لذلك، هذا هو المكان الذي نقوم به في ملف users.js مفيد جدا بالنسبة لنا.

213
00:17:20,290 --> 00:17:22,270
في ملف users.js،

214
00:17:22,270 --> 00:17:27,180
تذكر أن لديك بالفعل نقطة النهاية هذه تسمى تسجيل الدخول.

215
00:17:27,180 --> 00:17:28,700
في نقطة نهاية تسجيل الدخول،

216
00:17:28,700 --> 00:17:33,410
كنت تستخدم اسم المستخدم وكلمة المرور لمصادقة المستخدم.

217
00:17:33,410 --> 00:17:38,030
لذلك، حتى مع JsonWebToken لإصدار JsonWebToken،

218
00:17:38,030 --> 00:17:41,959
تحتاج أولاً إلى مصادقة المستخدم باستخدام إحدى الاستراتيجيات الأخرى،

219
00:17:41,959 --> 00:17:44,630
وإذا كنت ستستخدم الاستراتيجية المحلية أولاً،

220
00:17:44,630 --> 00:17:49,715
فسوف نقوم بمصادقة المستخدم باستخدام اسم المستخدم وكلمة المرور.

221
00:17:49,715 --> 00:17:53,415
بمجرد مصادقة المستخدم باستخدام اسم المستخدم وكلمة المرور،

222
00:17:53,415 --> 00:17:55,885
سنصدر الرمز المميز للمستخدم قائلا:

223
00:17:55,885 --> 00:17:57,330
«حسنًا، أنت مستخدم صالح،

224
00:17:57,330 --> 00:17:58,630
سأعطيك الرمز المميز».

225
00:17:58,630 --> 00:18:02,390
ستحمل جميع الطلبات اللاحقة الرمز المميز

226
00:18:02,390 --> 00:18:06,860
في رأس رسالة الطلب الواردة.

227
00:18:06,860 --> 00:18:10,415
لذلك، في وقت سابق، اعتدنا على إنشاء جلسات.

228
00:18:10,415 --> 00:18:11,840
عندما تتم مصادقة المستخدم،

229
00:18:11,840 --> 00:18:13,935
لن نستخدم الجلسات بعد الآن.

230
00:18:13,935 --> 00:18:17,640
بدلاً من ذلك، عندما تتم مصادقة المستخدم باستخدام الاستراتيجية المحلية،

231
00:18:17,640 --> 00:18:20,110
سنصدر رمزًا مميزًا للمستخدم.

232
00:18:20,110 --> 00:18:25,955
لذا، داخل هذه الطريقة router.post التي قمنا بها على نقطة النهاية ذلك/تسجيل الدخول،

233
00:18:25,955 --> 00:18:31,730
سأقوم بإنشاء رمز مميز وتمرير هذا الرمز المميز مرة أخرى إلى المستخدم.

234
00:18:31,730 --> 00:18:36,980
لذلك، هنا، سوف نقول جهاز التوجيه.

235
00:18:38,550 --> 00:18:40,785
اسمحوا لي أن إنشاء رمز مميز.

236
00:18:40,785 --> 00:18:42,630
لإنشاء رمز مميز،

237
00:18:42,630 --> 00:18:50,150
لدينا هذه الوظيفة في وحدة المصادقة تسمى Authenticate.getToken.

238
00:18:51,250 --> 00:18:54,325
لذا, أذكر, أن لدينا بالفعل,

239
00:18:54,325 --> 00:18:57,050
للاستفادة من ذلك بالطبع,

240
00:18:57,050 --> 00:18:59,210
حتى قبل أن نبدأ هناك,

241
00:18:59,210 --> 00:19:02,750
أنا بحاجة إلى استيراد المصادقة.

242
00:19:05,940 --> 00:19:17,720
الوحدة هنا لذلك، سنقول مصادقة تتطلب. /المصادقة.

243
00:19:18,000 --> 00:19:26,740
لذا، عندما تكون في التعليمات البرمجية هنا،

244
00:19:26,740 --> 00:19:29,270
يمكننا الآن أن نقول Authenticate.getToken،

245
00:19:31,530 --> 00:19:37,585
و getToken يأخذ المعلمة هنا.

246
00:19:37,585 --> 00:19:41,875
الآن، أذكر، والعودة ملف authenticate.js.

247
00:19:41,875 --> 00:19:46,665
يأخذ ملف authenticate.js معلمة واحدة هنا

248
00:19:46,665 --> 00:19:53,105
والتي سيتم استخدامها كحمولة عند إنشاء JsonWebToken.

249
00:19:53,105 --> 00:19:55,785
لذلك، في ملف users.js،

250
00:19:55,785 --> 00:19:59,230
سأقوم بإنشاء رمز مميز عن طريق إعطاء حمولة،

251
00:19:59,230 --> 00:20:02,890
والتي تحتوي فقط على معرف المستخدم.

252
00:20:02,890 --> 00:20:06,070
لذلك، سنقول معرف: req.user.

253
00:20:06,740 --> 00:20:11,940
هذا يكفي لإنشاء JsonWebToken.

254
00:20:11,940 --> 00:20:15,315
لا نريد تضمين أي معلومات أخرى للمستخدم.

255
00:20:15,315 --> 00:20:18,690
إذا اخترت ذلك، يمكنك تضمين أجزاء أخرى من معلومات المستخدم،

256
00:20:18,690 --> 00:20:21,715
ولكن أود أن أقترح أن تبقي JsonWebToken صغيرة.

257
00:20:21,715 --> 00:20:25,700
معرف المستخدم يكفي بما فيه الكفاية لأنه إذا كنت بحاجة إلى البحث عن المستخدم،

258
00:20:25,700 --> 00:20:32,840
فإن معرف المستخدم يكفي للبحث في MongoDB للمستخدم.

259
00:20:32,840 --> 00:20:39,230
لذلك، أنا فقط ذاهب إلى ترميز فقط معرف المستخدم هنا.

260
00:20:39,230 --> 00:20:44,930
الآن، أنت تعرف أن req.user سيكون موجودًا بالفعل،

261
00:20:44,930 --> 00:20:50,530
لأنه عندما يقوم passport.authenticate ('local') بمصادقة المستخدم بنجاح،

262
00:20:50,530 --> 00:20:54,650
سيؤدي ذلك إلى تحميل خاصية المستخدم على رسالة الطلب.

263
00:20:54,650 --> 00:20:57,300
لذلك، هذا هو السبب في أنني قادرة على القيام بذلك هنا.

264
00:20:57,300 --> 00:21:01,830
لذلك، هذا هو ما سأستخدمه لإنشاء الرمز المميز.

265
00:21:01,900 --> 00:21:05,120
الآن، بمجرد إنشاء الرمز المميز،

266
00:21:05,120 --> 00:21:09,720
أريد تمرير هذا الرمز المميز مرة أخرى إلى المستخدم.

267
00:21:09,720 --> 00:21:15,715
لذلك، في كائن rest.json الذي أقوم بتوفيره هنا،

268
00:21:15,715 --> 00:21:21,755
أنا بالفعل تحمل العلم الحقيقي النجاح وأيضا،

269
00:21:21,755 --> 00:21:23,855
رسالة حالة هنا.

270
00:21:23,855 --> 00:21:28,270
اسمحوا لي أن أضيف في الرمز المميز

271
00:21:28,270 --> 00:21:34,880
كواحدة من الخصائص في رسالة الرد هنا.

272
00:21:36,480 --> 00:21:39,475
لذا، فإن الرمز المميز الذي قمت بإنشائه للتو،

273
00:21:39,475 --> 00:21:47,595
سأقوم بتمرير هذا مرة أخرى كخاصية ثانية داخل سلسلة Json هذه هنا.

274
00:21:47,595 --> 00:21:55,370
حتى الآن، عندما يتلقى موكلي سلسلة Json هذه في نص رسالة الرد،

275
00:21:55,370 --> 00:21:59,870
يمكنه الدخول واستخراج الرمز المميز من هناك.

276
00:22:00,140 --> 00:22:05,500
هذا كل شيء لذلك، قمنا الآن بتحديث ملف users.js،

277
00:22:05,500 --> 00:22:08,630
ويمكنك الآن أن ترى كيف سيتم

278
00:22:08,630 --> 00:22:12,690
إنشاء الرمز المميز وإرساله مرة أخرى إلى المستخدم عند مصادقة المستخدم بنجاح.

279
00:22:12,690 --> 00:22:16,330
الآن، يمكن استخدام هذا النظام أيضًا

280
00:22:16,330 --> 00:22:21,250
عند استخدام مصادقة الجهات الخارجية مثل استنادًا إلى OAuth 2.0،

281
00:22:21,250 --> 00:22:23,525
والتي سنقوم بفحصها في الوحدة التالية.

282
00:22:23,525 --> 00:22:25,695
الآن، سيكون الإجراء مشابهًا.

283
00:22:25,695 --> 00:22:28,880
ستقوم بإنشاء رمز مميز عندما تتم مصادقة المستخدم من قبل موفر مصادقة

284
00:22:28,880 --> 00:22:32,560
الجهة الخارجية أو موفر مصادقة OAuth،

285
00:22:32,560 --> 00:22:35,640
ثم ستقوم بتمرير الرمز المميز مرة أخرى إلى المستخدم،

286
00:22:35,640 --> 00:22:39,010
في نهج مماثل كما ترى هنا.

287
00:22:39,010 --> 00:22:41,285
الآن، مرة واحدة قمنا بذلك،

288
00:22:41,285 --> 00:22:44,255
ثم نذهب إلى ملف app.js.

289
00:22:44,255 --> 00:22:53,660
في ملف app.js، لأننا قمنا بتضمين ملف تهيئة هنا.

290
00:22:53,660 --> 00:22:59,005
لذا، دعني أطلب ملف التكوين هنا،

291
00:22:59,005 --> 00:23:06,465
ثم عنوان URL الذي أستخدمه هنا بدلاً من ترميز عنوان URL هذا،

292
00:23:06,465 --> 00:23:11,345
سأقول Config.Mongourl.

293
00:23:11,345 --> 00:23:16,680
لذلك، الآن، ترى كيف يمكن استخدام ملف config.js الخاص بي

294
00:23:16,680 --> 00:23:23,520
كمكان مركزي حيث يمكنني إعداد التكوين للتطبيق الخاص بي.

295
00:23:23,520 --> 00:23:29,200
هذا كل شيء لذا، ما يحدث الآن هو أنه عندما

296
00:23:29,200 --> 00:23:35,010
يقوم المستخدم بالمصادقة على نقطة النهاية /تسجيل الدخول ويتم مصادقة المستخدم بنجاح،

297
00:23:35,010 --> 00:23:40,840
فسيتم إنشاء الرمز المميز بواسطة الخادم وإرساله مرة أخرى إلى العميل أو المستخدم.

298
00:23:40,840 --> 00:23:43,765
لذلك، سيقوم العميل بتضمين الرمز المميز في

299
00:23:43,765 --> 00:23:47,765
كل طلب وارد لاحق في رأس التفويض.

300
00:23:47,765 --> 00:23:50,590
الآن، كيف يتضمن رأس التفويض؟

301
00:23:50,590 --> 00:23:54,220
دعونا نعود إلى authentic.js وهنا،

302
00:23:54,220 --> 00:24:01,625
ترى أننا قلنا Extractjwt.FromauthheaderasbearerToken هنا.

303
00:24:01,625 --> 00:24:06,290
لذلك، سيتم تضمين هذا في رأس المصادقة كرمز مميز لحاملها.

304
00:24:06,290 --> 00:24:08,385
سأريك كيف يتم ذلك،

305
00:24:08,385 --> 00:24:15,535
ثم نستخدم ساعي البريد لتضمين الرمز المميز لحامله في رأس المصادقة.

306
00:24:15,535 --> 00:24:17,690
الآن، عندما يأتي هذا،

307
00:24:17,690 --> 00:24:21,060
فأنت تتذكر أنه أسفل هنا،

308
00:24:21,060 --> 00:24:25,095
قمت بتكوين هذه الطريقة هنا تسمى VerifyUser،

309
00:24:25,095 --> 00:24:30,635
والتي تستدعي مصادقة جواز السفر مع JWT.

310
00:24:30,635 --> 00:24:34,460
لذلك، يستخدم هذا الرمز المميز الذي

311
00:24:34,460 --> 00:24:38,620
يأتي في رأس المصادقة ثم يتحقق من المستخدم.

312
00:24:38,620 --> 00:24:41,980
لذلك، في أي وقت أريد التحقق من صحة المستخدم،

313
00:24:41,980 --> 00:24:43,855
يمكنني ببساطة استدعاء التحقق من المستخدم،

314
00:24:43,855 --> 00:24:49,115
والتي ستبدأ المكالمة إلى passport.authenticate والتحقق من سر. و

315
00:24:49,115 --> 00:24:50,315
إذا كان هذا ناجحا,

316
00:24:50,315 --> 00:24:51,800
فسيسمح لي بالمضي قدما.

317
00:24:51,800 --> 00:24:55,620
هذا الإجراء مشابه جدا لما قمت به في

318
00:24:55,620 --> 00:25:01,610
ملف users.js حيث يمكنك استدعاء نفس passport.authenticate ('المحلية').

319
00:25:01,720 --> 00:25:04,320
لذلك، إذا كان هذا ناجحا،

320
00:25:04,320 --> 00:25:05,885
ثم المضي قدما.

321
00:25:05,885 --> 00:25:10,930
إذا فشلت، ستقوم وظيفة المصادقة بإرجاع رسالة الخطأ

322
00:25:10,930 --> 00:25:16,050
مرة أخرى إلى العميل قائلا أن المستخدم غير مصرح به.

323
00:25:16,050 --> 00:25:18,345
لذلك، هذا هو بالفعل اتخذت الرعاية.

324
00:25:18,345 --> 00:25:23,020
حتى الآن، بعد أن قمنا بتضمين هذا في ملف authenticate.js الخاص بي،

325
00:25:23,020 --> 00:25:26,050
أي مكان أريد التحقق من المستخدم،

326
00:25:26,050 --> 00:25:27,480
يمكنني ببساطة استدعاء

327
00:25:27,480 --> 00:25:31,210
هذه الوظيفة فيريفيوسر

328
00:25:31,210 --> 00:25:34,320
التي حددتها هنا أو التصدير الذي حددته هنا،

329
00:25:34,320 --> 00:25:37,220
والتي سنقوم باستدعاء passport.authenticate باستخدام

330
00:25:37,220 --> 00:25:40,540
استراتيجية JWT لمصادقة المستخدم.

331
00:25:40,540 --> 00:25:42,440
الآن، كيف نستفيد من هذا؟

332
00:25:42,440 --> 00:25:47,785
الآن، ما سنفعله هو الذهاب إلى كل واحد من أجهزة التوجيه لدينا،

333
00:25:47,785 --> 00:25:56,945
والتحكم في الخيارات على جميع الطرق التي نريد السيطرة عليها.

334
00:25:56,945 --> 00:26:00,300
لذا، بالعودة إلى ملف app.js، الآن،

335
00:26:00,300 --> 00:26:07,925
أننا لا نستخدم جلسات سأقوم بإزالة هذه الجلسة من هنا،

336
00:26:07,925 --> 00:26:10,150
لأننا لم نعد نستخدم الجلسات.

337
00:26:10,150 --> 00:26:14,990
وبالمثل، أنا ذاهب لإزالة هذا passport.session من هنا أيضا.

338
00:26:14,990 --> 00:26:17,580
و هذا أيضا لا حاجة إليه.

339
00:26:17,580 --> 00:26:20,430
أيضا، هذه المصادقة، انظر سابقا،

340
00:26:20,430 --> 00:26:21,940
عندما قمت بتكوين هذه المصادقة،

341
00:26:21,940 --> 00:26:25,490
تم تطبيق هذه المصادقة على كل طلب وارد واحد.

342
00:26:25,490 --> 00:26:28,705
الآن، سأقوم بتغيير طلبي،

343
00:26:28,705 --> 00:26:35,055
حيث سأحتاج إلى المصادقة فقط على طرق معينة وليس على جميع الطرق.

344
00:26:35,055 --> 00:26:39,665
لذلك، اسمحوا لي إزالة هذه المصادقة تماما من app.js.

345
00:26:39,665 --> 00:26:41,995
لذلك، الآن، عندما يأتي الطلب،

346
00:26:41,995 --> 00:26:45,850
إذا كان على/ نقطة النهاية،

347
00:26:45,850 --> 00:26:47,080
سيتم تقديم الفهرس.

348
00:26:47,080 --> 00:26:52,040
إذا كان على/المستخدمين نقطة النهاية، فسيسمح لك بالانتقال إلى

349
00:26:52,040 --> 00:26:57,815
المسارات المختلفة التي يتم تثبيتها على/المستخدمين في users.js،

350
00:26:57,815 --> 00:27:00,900
ثم بعد ذلك، بقية منها.

351
00:27:00,900 --> 00:27:03,420
ما سأفعله الآن هو أنني سأترك

352
00:27:03,420 --> 00:27:07,250
المجلد العام مفتوحاً لأي شخص ليدخل إليه

353
00:27:07,250 --> 00:27:09,145
الآن، في العديد من التطبيقات،

354
00:27:09,145 --> 00:27:10,665
قد يكون هذا على ما يرام.

355
00:27:10,665 --> 00:27:13,045
لذا، سأترك هذا مفتوحاً

356
00:27:13,045 --> 00:27:14,825
الآن، على الأطباق،

357
00:27:14,825 --> 00:27:17,920
والترقيات، ونقطة نهاية القادة،

358
00:27:17,920 --> 00:27:20,875
كل طلبات الحصول على.

359
00:27:20,875 --> 00:27:28,205
سأسمح بالرد عليها دون الحاجة إلى أي مصادقة.

360
00:27:28,205 --> 00:27:30,200
الآن لماذا أريد أن أفعل ذلك؟

361
00:27:30,200 --> 00:27:33,190
إذا كان المستخدم يقوم بطلب الحصول

362
00:27:33,190 --> 00:27:35,455
على، يريد المستخدم فقط استرداد المعلومات.

363
00:27:35,455 --> 00:27:40,490
لذلك، على سبيل المثال، على جانب العميل إذا كنت أقوم بتنفيذ تطبيق ويب باستخدام Angular

364
00:27:40,490 --> 00:27:46,290
أو تطبيق عميل باستخدام برنامج أيوني أو نصي

365
00:27:46,290 --> 00:27:49,920
أصلي، فربما أرغب في تنفيذ تطبيقي

366
00:27:49,920 --> 00:27:54,310
بطريقة تعرض الصفحة الرئيسية المعلومات بالفعل،

367
00:27:54,310 --> 00:27:57,715
والمعلومات الجينية التي تريد متاحًا لأي شخص

368
00:27:57,715 --> 00:28:01,590
يزور موقعك الإلكتروني أو يفتح تطبيقك.

369
00:28:01,590 --> 00:28:04,360
لذلك، يمكن عرض المعلومات الأساسية هناك.

370
00:28:04,360 --> 00:28:08,060
ولكن إذا كنت ترغب في تغيير أي شيء،

371
00:28:08,060 --> 00:28:12,110
فأنت تتوقع مصادقة المستخدم.

372
00:28:12,110 --> 00:28:16,255
لذلك، سوف تسمح عمليات بوست، ووضع العمليات،

373
00:28:16,255 --> 00:28:21,110
وحذف العمليات التي يتعين القيام بها فقط من قبل المستخدمين المصادق عليهم.

374
00:28:21,110 --> 00:28:23,605
وبالمثل، بالنسبة للتعليقات على سبيل المثال،

375
00:28:23,605 --> 00:28:30,280
يمكنك القول أنه يمكن نشر التعليقات أو تعديلها فقط من قبل المستخدمين المصادق عليهم.

376
00:28:30,280 --> 00:28:34,570
لذلك، يمكنك تقييد بعض المسارات فقط للمستخدمين المصادق عليهم،

377
00:28:34,570 --> 00:28:37,940
المسار الآخر الذي يمكنك تركه مفتوحًا. كيف نفعل ذلك؟

378
00:28:37,940 --> 00:28:41,180
الآن هذا هو المكان الذي تحقق المستخدم الذي

379
00:28:41,180 --> 00:28:45,055
قمنا بتصديره من ملف authenticate.js يأتي في متناول اليدين.

380
00:28:45,055 --> 00:28:49,460
الآن بدلا من السيطرة على جميع نقاط النهاية،

381
00:28:49,460 --> 00:28:53,190
وجميع العمليات المختلفة على الأطباق، والترقيات،

382
00:28:53,190 --> 00:28:54,740
والقادة في النقاط،

383
00:28:54,740 --> 00:28:58,240
ونحن سوف تفتح فقط الحصول على عمليات لأي شخص،

384
00:28:58,240 --> 00:29:00,830
ولكن وظيفة، ووضع،

385
00:29:00,830 --> 00:29:04,995
وحذف العمليات سوف تقتصر فقط على المستخدمين المصادق عليهم.

386
00:29:04,995 --> 00:29:10,350
في المهمة، ستضيف فئة واحدة أخرى من المستخدمين تسمى مستخدمي المشرف.

387
00:29:10,350 --> 00:29:15,320
الآن يمكنك تقييد عمليات معينة ليتم تنفيذها فقط من قبل مستخدمي المشرف.

388
00:29:15,320 --> 00:29:18,460
لذلك، على سبيل المثال، تعديل الأطباق

389
00:29:18,460 --> 00:29:22,530
أو حذف معلومات الأطباق من قاعدة البيانات،

390
00:29:22,530 --> 00:29:24,600
وسوف يقتصر فقط على المستخدمين المشرف.

391
00:29:24,600 --> 00:29:30,000
ولكن يمكن للمستخدمين الأساسيين نشر التعليقات،

392
00:29:30,000 --> 00:29:32,470
وتعديل التعليقات التي

393
00:29:32,470 --> 00:29:35,450
نشرتها، وربما حتى حفظ بعض الأطباق المفضلة.

394
00:29:35,450 --> 00:29:38,520
سنفعل ذلك الجزء في الوحدة الرابعة

395
00:29:38,520 --> 00:29:42,735
الآن كيف يمكننا التحكم في طرق محددة؟

396
00:29:42,735 --> 00:29:46,210
لذلك هذا هو المكان الذي يجب أن نذهب إلى كل من أجهزة التوجيه

397
00:29:46,210 --> 00:29:50,365
ومن ثم استيراد الضوابط على مسارات محددة.

398
00:29:50,365 --> 00:29:53,945
لذلك، دعونا نبدأ مع الطريق الأطباق.

399
00:29:53,945 --> 00:29:55,770
لذلك، بالنسبة لمسار الأطباق،

400
00:29:55,770 --> 00:29:59,950
عليك أن تتذكر أنه يتم التحكم في هذا في ملف dishRouter.js.

401
00:29:59,950 --> 00:30:02,515
لذلك، انتقل إلى dishRouter.js،

402
00:30:02,515 --> 00:30:07,450
دعونا أولا استيراد المصادقة هنا.

403
00:30:07,450 --> 00:30:13,400
لذلك سنقول، مصادقة const

404
00:30:17,010 --> 00:30:24,700
تتطلب.. /المصادقة لأن

405
00:30:24,700 --> 00:30:29,110
هذا الملف authenticator.js في مجلد المستوى الأعلى.

406
00:30:29,110 --> 00:30:32,105
لذلك، تذكر../المصادقة هنا.

407
00:30:32,105 --> 00:30:34,505
لذلك، بمجرد استيراد المصادقة،

408
00:30:34,505 --> 00:30:37,965
لمسار جهاز التوجيه الطبق لهذا الطريق،

409
00:30:37,965 --> 00:30:42,560
عملية الحصول على، وأنا ذاهب للسماح دون أي مشكلة.

410
00:30:42,560 --> 00:30:44,820
إذن، هذا مفتوح

411
00:30:44,820 --> 00:30:47,025
لذلك أنا لن أفرض أي قيود.

412
00:30:47,025 --> 00:30:51,750
من المشاركة، إذا أردنا تطبيق برامج وسيطة متعددة،

413
00:30:51,750 --> 00:30:56,035
يمكننا ببساطة إضافة الرئيسي داخل هذا واحد وراء الآخر.

414
00:30:56,035 --> 00:30:58,050
الآن عندما يتم استدعاء المشاركة،

415
00:30:58,050 --> 00:31:02,295
الآن أنت ببساطة تنفيذ هذه الوظيفة هنا.

416
00:31:02,295 --> 00:31:04,150
الآن قبل ذلك،

417
00:31:04,150 --> 00:31:12,400
يمكنني الذهاب في ويقول، authenticate.VerifyUser، هناك.

418
00:31:12,400 --> 00:31:13,805
إذاً، ماذا يفعل هذا؟

419
00:31:13,805 --> 00:31:17,210
هذا يقول أنه إذا جاء طلب آخر في،

420
00:31:17,210 --> 00:31:20,940
وأود أولا تنفيذ هذا الوسيطة،

421
00:31:20,940 --> 00:31:24,805
التي قمت بتصديرها من ملف authentic.js،

422
00:31:24,805 --> 00:31:26,100
وأنا أولا تطبيق ذلك،

423
00:31:26,100 --> 00:31:32,075
وهو ما يعادل القول جواز سفر مصادقة JWT وكنت التحقق من المستخدم.

424
00:31:32,075 --> 00:31:34,655
ثم إذا كان هذا ناجحا،

425
00:31:34,655 --> 00:31:38,890
ثم سوف ننتقل إلى القيام بقية منه.

426
00:31:38,890 --> 00:31:42,955
إذا فشلت المصادقة في هذه المرحلة،

427
00:31:42,955 --> 00:31:46,290
فسيرد مصادقة جواز السفر

428
00:31:46,290 --> 00:31:49,395
مرة أخرى إلى العميل مع رسالة الخطأ المناسبة.

429
00:31:49,395 --> 00:31:51,640
لذلك يتم التعامل معها بالفعل عن طريق مصادقة جواز السفر،

430
00:31:51,640 --> 00:31:54,350
لذلك لا داعي للقلق أي شيء أبعد من تلك النقطة.

431
00:31:54,350 --> 00:31:58,300
إذا كنت قد عبرت هذه البرامج الوسيطة ثم الحصول على

432
00:31:58,300 --> 00:32:02,990
تنفيذ الوظيفة التالية التي تعني أن المصادقة الخاصة بي كانت ناجحة،

433
00:32:02,990 --> 00:32:05,560
لذلك أنا قادرة على المضي قدما من هذه النقطة.

434
00:32:05,560 --> 00:32:11,760
لذلك، هذا هو بمثابة حاجز لهذه الطريقة المشاركة.

435
00:32:11,760 --> 00:32:14,860
الآن باستخدام نفس الحجة،

436
00:32:14,860 --> 00:32:21,435
يمكنني ببساطة تطبيق هذه البرامج الوسيطة الخاصة على جميع الطرق الأخرى.

437
00:32:21,435 --> 00:32:23,845
أستطيع أن أفعل ذلك إلى وضع.

438
00:32:23,845 --> 00:32:26,030
على الرغم من أن في هذه الحالة،

439
00:32:26,030 --> 00:32:28,640
وضع لن يكون القيام بأي شيء.

440
00:32:28,640 --> 00:32:30,110
ولكن على أي حال،

441
00:32:30,110 --> 00:32:33,980
سوف ببساطة من أجل التوحيد،

442
00:32:33,980 --> 00:32:38,490
وسوف أطبق المستخدم التحقق أيضا لوضع وبطبيعة الحال،

443
00:32:38,490 --> 00:32:41,315
لحذف أيضا، وأنا ذاهب لتطبيق وضع.

444
00:32:41,315 --> 00:32:44,805
وبالمثل، النزول إلى/dishid،

445
00:32:44,805 --> 00:32:48,915
احصل على سأسمح بذلك للعمل دون أي مشكلة.

446
00:32:48,915 --> 00:32:52,470
آخر، وسوف تطبيق التحقق من المستخدم.

447
00:32:52,470 --> 00:32:59,600
ضع أيضا سأطبق المستخدم التحقق وللحذف نفسه أيضا.

448
00:32:59,600 --> 00:33:09,105
ل /ديشيد/التعليقات، وأنا ذاهب الى ترك الحصول على مفتوحة،

449
00:33:09,105 --> 00:33:14,030
لا بأس لأي شخص لاسترداد تعليقات حول طبق معين.

450
00:33:14,030 --> 00:33:17,140
بعد ذلك، سأقوم بإغلاق هذا،

451
00:33:17,140 --> 00:33:21,995
لذلك يمكن للمستخدمين الذين تم التحقق منهم فقط نشر التعليقات.

452
00:33:21,995 --> 00:33:27,710
وضع أيضا سوف أغلق هذا قبالة وحذف أيضا.

453
00:33:29,280 --> 00:33:33,035
عليك أن تذهب خطوة أخرى إلى الأمام وتقول،

454
00:33:33,035 --> 00:33:38,230
«فقط المستخدمين الذين قاموا بنشر التعليق يمكنهم حذف مشاركاتهم الخاصة».

455
00:33:38,230 --> 00:33:40,310
لكننا سنفعل ذلك في الوحدة التالية.

456
00:33:40,310 --> 00:33:41,840
في الوقت الحالي، سأقول،

457
00:33:41,840 --> 00:33:44,415
«حسنًا، يمكن لمستخدم تم التحقق منه حذف أي تعليق».

458
00:33:44,415 --> 00:33:46,715
هذا بالطبع غير صحيح،

459
00:33:46,715 --> 00:33:48,850
يمكننا وضع شيكات إضافية،

460
00:33:48,850 --> 00:33:52,145
لكننا سنفعل ذلك في الوحدة التالية من هذه الدورة.

461
00:33:52,145 --> 00:33:54,405
لذلك، لحذف أيضا أنا تطبيق نفسه.

462
00:33:54,405 --> 00:33:58,060
مرة أخرى، لتعليقات/تعليقات جهاز التوجيه الطبق ID،

463
00:33:58,060 --> 00:34:00,300
احصل على سأتركه مفتوحًا.

464
00:34:00,300 --> 00:34:04,485
بعد ذلك، سأتركه مغلقاً

465
00:34:04,485 --> 00:34:12,640
ضع أيضًا إغلاقه ثم لحذفه أيضًا سأقوم بإغلاق هذا.

466
00:34:12,640 --> 00:34:14,970
حذف بالطبع كما قلت،

467
00:34:14,970 --> 00:34:19,180
يجب السماح لعملية الحذف فقط المستخدم الذي

468
00:34:19,180 --> 00:34:24,150
أنشأ التعليق يجب أن يطلب حذف ذلك،

469
00:34:24,150 --> 00:34:27,960
ولكن تحتاج إلى إعداد بعض الأشياء الإضافية لذلك للعمل بشكل صحيح،

470
00:34:27,960 --> 00:34:30,825
والتي سنفعل في الوحدة التالية.

471
00:34:30,825 --> 00:34:36,455
في الوقت الحالي، نقول أن المستخدم الذي تم التحقق منه يمكنه حذف تعليق محدد، هذا كل شيء.

472
00:34:36,455 --> 00:34:42,820
الآن سوف نطبق نفس المبدأ على جهاز التوجيه الترويجي وأيضا جهاز التوجيه الزعيم.

473
00:34:42,820 --> 00:34:44,950
لذلك، الذهاب إلى جهاز التوجيه الترويجي،

474
00:34:44,950 --> 00:34:53,100
اسمحوا لي استيراد المصادقة

475
00:34:57,320 --> 00:35:00,870
ومن ثم الحصول على مفتوحة،

476
00:35:00,870 --> 00:35:03,540
لذلك هذا هو جهاز التوجيه زعيم.

477
00:35:03,540 --> 00:35:05,380
لذا، الحصول على مفتوحة.

478
00:35:05,380 --> 00:35:08,365
آخر, أنا ذاهب للسيطرة على ذلك,

479
00:35:08,365 --> 00:35:12,865
وضع, السيطرة, حذف, التحكم,

480
00:35:12,865 --> 00:35:14,790
قائد جهاز التوجيه, زعيم ID,

481
00:35:14,790 --> 00:35:17,255
الحصول على ما يرام, آخر,

482
00:35:17,255 --> 00:35:22,330
تسيطر, وضع يتم التحكم و حذف يتم التحكم.

483
00:35:22,330 --> 00:35:24,795
نفس الشيء مع جهاز التوجيه الترويجي.

484
00:35:24,795 --> 00:35:38,652
اسمحوا لي، تتطلب مصادقة

485
00:35:38,652 --> 00:35:43,570
ومن ثم للحصول على الطريق مفتوح، يتم التحكم في

486
00:35:43,570 --> 00:35:47,109
POST، يتم التحكم في وضع، يتم التحكم في

487
00:35:47,109 --> 00:35:50,790
حذف، نفس الشيء لpromorouter/promoid.

488
00:35:50,790 --> 00:35:54,460
الحصول على مفتوح، يتم التحكم في POST،

489
00:35:54,460 --> 00:35:58,395
ووضع وحذف يتم التحكم أيضا، هذا كل شيء.

490
00:35:58,395 --> 00:36:00,225
دعونا حفظ جميع التغييرات.

491
00:36:00,225 --> 00:36:02,660
لذلك، بمجرد إكمال جميع التغييرات،

492
00:36:02,660 --> 00:36:04,185
دعونا حفظ التغييرات.

493
00:36:04,185 --> 00:36:08,270
الآن، طلبنا جاهز للاختبار.

494
00:36:08,270 --> 00:36:11,485
لذلك، دعونا نذهب وإعادة تشغيل الخادم لدينا،

495
00:36:11,485 --> 00:36:14,885
أو إذا كان الخادم لا يعمل،

496
00:36:14,885 --> 00:36:16,590
سنقوم فقط بدء تشغيل الخادم.

497
00:36:16,590 --> 00:36:18,770
الذهاب إلى المحطة،

498
00:36:18,770 --> 00:36:20,040
الخادم الخاص بي لا يعمل.

499
00:36:20,040 --> 00:36:23,930
لذلك، اسمحوا لي أن أبدأ الخادم عن طريق كتابة بداية npm.

500
00:36:24,620 --> 00:36:28,935
ومن المثير للاهتمام، أنه مجرد إلقاء خطأ هنا،

501
00:36:28,935 --> 00:36:32,330
أردت فقط أن أوضح لك أنه حتى أنا يمكن أن يخطئ،

502
00:36:32,330 --> 00:36:34,840
لذلك سترى أن هناك خطأ هنا يقول،

503
00:36:34,840 --> 00:36:40,275
«لا يمكن العثور على module.authenticate»، وبعد ذلك إذا نظرت من خلال التعليمات البرمجية،

504
00:36:40,275 --> 00:36:45,255
أجد أن هذه المشكلة حدثت في،

505
00:36:45,255 --> 00:36:46,850
أين حدث ذلك؟

506
00:36:46,850 --> 00:36:48,350
لذلك، أنا فقط البحث هنا،

507
00:36:48,350 --> 00:36:50,020
ثم في مكان ما هنا،

508
00:36:50,020 --> 00:36:56,130
لاحظت أن هذه المشكلة حدثت داخل ملف users.js الخاص بي.

509
00:36:56,130 --> 00:36:57,870
لذلك، هناك حق، كما يقول،

510
00:36:57,870 --> 00:37:00,355
هذا هو في ملف users.js.

511
00:37:00,355 --> 00:37:05,655
لذلك، والذهاب إلى ملف users.js، دعونا إصلاح ذلك.

512
00:37:05,655 --> 00:37:09,015
الذهاب إلى ملف users.js،

513
00:37:09,015 --> 00:37:14,285
مباشرة في الجزء العلوي عندما طلبت المصادقة، قلت،

514
00:37:14,285 --> 00:37:17,555
«.authenticate»، وكما كنت أقول لك،

515
00:37:17,555 --> 00:37:21,200
يجب أن يكون نقطة نقطة لأنه في المجلد العلوي.

516
00:37:21,200 --> 00:37:25,905
هذا الملف users.js في مجلد المسارات،

517
00:37:25,905 --> 00:37:31,985
والمصادقة في مجلد Projects Route لذلك يجب أن يكون هذا نقطة المصادقة.

518
00:37:31,985 --> 00:37:34,660
لذا، إذا ارتكبت أخطاء، ها أنت ذا،

519
00:37:34,660 --> 00:37:40,450
هذه هي الطريقة التي سيتم تذكيرك بها بالخطأ الذي قدمتموه.

520
00:37:40,450 --> 00:37:44,540
لذلك، دعونا حفظ التغييرات ثم إعادة تشغيل الخادم لدينا.

521
00:37:44,540 --> 00:37:47,795
مرة أخرى، والعودة إلى هذا الجهاز،

522
00:37:47,795 --> 00:37:54,735
اسمحوا لي أن أبدأ الخادم بلدي والخادم الخاص بي هو الآن قيد التشغيل،

523
00:37:54,735 --> 00:38:00,235
دعونا نذهب إلى ساعي البريد ومن ثم اختبار التطبيق لدينا.

524
00:38:00,235 --> 00:38:04,695
الآن، في ساعي البريد، اسمحوا لي أولا محاولة للقيام

525
00:38:04,695 --> 00:38:11,170
جيت على لوكالهوست: 3000/أطباق وبعد ذلك عندما أفعل جيت،

526
00:38:11,170 --> 00:38:15,620
فإنه ناجح لأنه لا يتم التحكم في نقطة نهاية جيت.

527
00:38:15,620 --> 00:38:18,595
حتى أتمكن من القيام GET على الأطباق،

528
00:38:18,595 --> 00:38:23,545
يمكنني أن أفعل GET على الترقيات،

529
00:38:23,545 --> 00:38:25,420
وكل شيء يعمل على ما يرام.

530
00:38:25,420 --> 00:38:28,300
ولكن إذا حاولت القيام POST على الأطباق،

531
00:38:28,300 --> 00:38:32,435
لذلك اسمحوا لي أن أجد المكان الذي قمت به POST على الأطباق.

532
00:38:32,435 --> 00:38:35,245
هنا لقد فعلت POST على الأطباق.

533
00:38:35,245 --> 00:38:38,030
لذلك، عندما حاولت أن تفعل بوست على الأطباق،

534
00:38:38,030 --> 00:38:40,540
فإنه يقول على الفور غير مصرح به.

535
00:38:40,540 --> 00:38:47,410
لذلك أدركت وحدة جواز السفر الخاصة بي أنني غير مأذون لذلك أنا غير مسموح لي بالقيام بذلك،

536
00:38:47,410 --> 00:38:49,825
لذلك هذا ما يذكرني به.

537
00:38:49,825 --> 00:38:52,750
اسمحوا لي أن تنظيف ملفات تعريف الارتباط من،

538
00:38:52,750 --> 00:38:57,980
في حالة العثور على ملف تعريف ارتباط في ساعي البريد الخاص بك فقط قم بإزالة ملف تعريف الارتباط

539
00:38:57,980 --> 00:39:00,410
المطابق للمضيف المحلي لأن

540
00:39:00,410 --> 00:39:03,815
ملف تعريف الارتباط هذا لم يعد مطلوبًا ولن يكون مطلوبًا.

541
00:39:03,815 --> 00:39:06,100
لذلك، حتى لو قمت بإزالة ملف تعريف الارتباط ثم POST،

542
00:39:06,100 --> 00:39:07,990
فإنه سيظل يقول غير مصرح به.

543
00:39:07,990 --> 00:39:11,715
لذا، أنا لست مخوّلاً للقيام بهذه العمليات

544
00:39:11,715 --> 00:39:13,305
لذلك، لا بد لي من تسجيل الدخول.

545
00:39:13,305 --> 00:39:15,430
الآن، إذا كنت قد فعلت التمرين السابق،

546
00:39:15,430 --> 00:39:19,390
كنت قد تركت المستخدم الذي قمت بالتسجيل في وقت سابق.

547
00:39:19,390 --> 00:39:25,865
لذلك، على سبيل المثال، كنت قد وقعت هذا المستخدم معين في التمرين السابق،

548
00:39:25,865 --> 00:39:29,530
واسمحوا لي أن أحاول تسجيل نفس المستخدم مرة أخرى

549
00:39:29,530 --> 00:39:36,090
ويجب أن يشكو الخادم الخاص بي قائلا UserExistSerror بحيث يعني أن المستخدم موجود،

550
00:39:36,090 --> 00:39:38,455
لذلك أنا لست بحاجة إلى الاشتراك مرة أخرى.

551
00:39:38,455 --> 00:39:42,290
إذا قمت بحذف المستخدم من MongoDB الخاص بك،

552
00:39:42,290 --> 00:39:47,275
فما عليك سوى تسجيل ذلك المستخدم مرة أخرى ثم دعنا ندخل.

553
00:39:47,275 --> 00:39:55,830
لذلك، سوف نرسل طلب تسجيل الدخول إلى نقطة النهاية هذه.

554
00:39:55,830 --> 00:40:00,640
لذلك، عندما أرسل طلب تسجيل الدخول عن طريق إجراء POST إلى المستخدم النهائي،

555
00:40:00,640 --> 00:40:03,365
لاحظ ما يتم إرجاعه بواسطة الخادم الخاص بي.

556
00:40:03,365 --> 00:40:06,965
لاحظت على الفور أنه في رسالة الرد

557
00:40:06,965 --> 00:40:10,830
جنبا إلى جنب مع علامة النجاح ورسالة الحالة،

558
00:40:10,830 --> 00:40:13,740
يمكنك أيضا الحصول على رمز هنا.

559
00:40:13,740 --> 00:40:16,365
الآن، هذا الرمز المميز،

560
00:40:16,365 --> 00:40:17,960
أحتاج إلى نسخ هذا الرمز المميز،

561
00:40:17,960 --> 00:40:21,045
لأنه في طلباتي اللاحقة،

562
00:40:21,045 --> 00:40:23,535
سأحتاج إلى تضمين هذا الرمز المميز.

563
00:40:23,535 --> 00:40:31,610
لذلك، اسمحوا لي أن أذهب إلى النسخة الأولية من هذا وأنني ذاهب لنسخ هذا الرمز المميز.

564
00:40:31,610 --> 00:40:33,875
هذا الرمز المميز ليس سوى سلسلة طويلة هناك،

565
00:40:33,875 --> 00:40:36,260
لذلك اسمحوا لي بنسخ هذا الرمز المميز.

566
00:40:36,260 --> 00:40:41,765
ثم الآن إذا كنت تشعر بالفضول حول ما هو موجود في هذا الرمز المميز،

567
00:40:41,765 --> 00:40:44,800
يمكن فحص رمز JSON Web Token.

568
00:40:44,800 --> 00:40:48,140
هناك موقع معين حيث يمكنك الدخول والكتابة

569
00:40:48,140 --> 00:40:52,235
في JSON Web Token الخاص بك ثم تحقق بالفعل ما هو داخل JSON Web Token.

570
00:40:52,235 --> 00:40:54,980
لنفعل ذلك كخطوة تالية

571
00:40:54,980 --> 00:40:56,685
في نافذة المتصفح،

572
00:40:56,685 --> 00:41:05,565
فقط اكتب jwt.io وهذا سوف يأخذك إلى هذا الموقع يسمى JSON Web Token jwt.io.

573
00:41:05,565 --> 00:41:07,590
إذا كنت تتذكر، في المحاضرة،

574
00:41:07,590 --> 00:41:10,685
كنت قد عرضت لك بنية JSON Web Token

575
00:41:10,685 --> 00:41:14,290
وأظهرت لك أن رمز JSON Web Token يحتوي على ثلاثة أجزاء: الرأس

576
00:41:14,290 --> 00:41:18,040
والحمولة والمعلومات هناك.

577
00:41:18,040 --> 00:41:19,730
الآن، في هذه الحالة،

578
00:41:19,730 --> 00:41:25,880
المعلومات موجودة هنا لذا سأقوم

579
00:41:25,880 --> 00:41:33,285
بلصق رمز JSON Web Token الخاص بي في هذا الجانب الأيسر،

580
00:41:33,285 --> 00:41:37,270
لذا دعني أختار ذلك ثم قم بلصق JSON Web Token الخاص بي

581
00:41:37,270 --> 00:41:41,920
في الجانب الأيسر في الجزء المشفر ثم على الجانب الأيمن،

582
00:41:41,920 --> 00:41:46,030
يظهر لك بالضبط ما هو داخل رمز ويب JSON الذي قمت بإنشائه للتو.

583
00:41:46,030 --> 00:41:49,580
لذلك، تقول أن الرأس يحتوي على هاتين القطعتين من المعلومات.

584
00:41:49,580 --> 00:41:54,090
إشعار الحمولة أنه يحتوي على معرف

585
00:41:54,090 --> 00:41:59,245
المستخدم ثم التوقيع في الجزء السفلي هنا.

586
00:41:59,245 --> 00:42:03,995
لذا، هذا هو ما يرد داخل رمز JSON Web Token الخاص بي.

587
00:42:03,995 --> 00:42:07,005
العودة إلى ساعي البريد،

588
00:42:07,005 --> 00:42:12,110
اسمحوا لي الآن محاولة للحصول على الأطباق.

589
00:42:12,110 --> 00:42:15,940
لذلك، عندما أقول GET localhost: 3000/days،

590
00:42:15,940 --> 00:42:18,650
فإنه لا يزال يعرض سلسلة فارغة،

591
00:42:18,650 --> 00:42:23,385
صفيف فارغ هنا لأن قاعدة البيانات الخاصة بي لا تحتوي عليها.

592
00:42:23,385 --> 00:42:29,635
لذلك، اسمحوا لي POST طبق إلى قاعدة البيانات الخاصة بي.

593
00:42:29,635 --> 00:42:33,290
لذلك، أنا ذاهب لاختيار عملية بوست وفي الجسم،

594
00:42:33,290 --> 00:42:36,095
ترى أن لدي طبق بلدي هنا.

595
00:42:36,095 --> 00:42:41,215
في الرأس، سأقوم بإضافة رأس جديد يسمى

596
00:42:41,215 --> 00:42:47,240
التفويض وتذكر أنه في وقت سابق للحصول على إذن أساسي،

597
00:42:47,240 --> 00:42:53,425
قلت أساسي ثم كان لديك سلسلة ترميز Base 64 هناك.

598
00:42:53,425 --> 00:42:58,970
إذا كنت ترغب في تضمين رمز JSON Web Token الخاص بك في رأس التفويض،

599
00:42:58,970 --> 00:43:01,150
لأنه في شفرتنا،

600
00:43:01,150 --> 00:43:04,550
قلنا التفويض كرمز حامل.

601
00:43:04,550 --> 00:43:08,040
لذا، إذا كنت ترغب في تضمين الرمز المميز في رأس التفويض،

602
00:43:08,040 --> 00:43:13,275
فسنقول حامل في التفويض ثم سنقوم بلصق

603
00:43:13,275 --> 00:43:19,080
سلسلة الرمز المميز التي قمنا بنسخها للتو من طلبنا الوارد.

604
00:43:19,080 --> 00:43:21,935
لذلك، سنقوم بلصق سلسلة الرمز المميز هناك.

605
00:43:21,935 --> 00:43:24,360
لذا، هذا هو ما سيتم

606
00:43:24,360 --> 00:43:29,795
تضمينه في رأس التفويض الخاص بطلبي الصادر هنا،

607
00:43:29,795 --> 00:43:33,845
طلب POST الصادر هنا.

608
00:43:33,845 --> 00:43:39,970
لذا لاحظ أن الجانب الأيسر يقول حامل والجانب الأيمن هو السلسلة،

609
00:43:39,970 --> 00:43:43,230
الرمز المميز الذي قمت بنسخه للتو من

610
00:43:43,230 --> 00:43:48,460
النقطة التي قمت بتسجيل الدخول فيها ثم دعني أرسل رسالة POST

611
00:43:48,460 --> 00:43:57,590
الآن وأصبح POST ناجحًا الآن ويتم نشر هذا إلى قاعدة البيانات الخاصة بي.

612
00:43:57,590 --> 00:44:01,115
الآن، إذا كنت تريد التأكد من أنه قد تم نشره،

613
00:44:01,115 --> 00:44:04,555
دعونا نفعل GET وعندما تفعل GET،

614
00:44:04,555 --> 00:44:12,935
يمكنك أن ترى أنه في الواقع تم إدراج هذا الطبق في قاعدة البيانات الخاصة بي كما هو موضح هنا.

615
00:44:12,935 --> 00:44:19,260
لذا، هذه هي الطريقة التي ستستفيد بها من رموز JSON Web Tokens في التطبيق الخاص بك.

616
00:44:19,260 --> 00:44:22,230
لذلك، كلما كنت بحاجة إلى إجراء

617
00:44:22,230 --> 00:44:25,505
عملية POST أو PUT أو DELETE على أي من نقاط النهاية،

618
00:44:25,505 --> 00:44:27,010
فستضمين.

619
00:44:27,010 --> 00:44:33,895
لذا، دعني أعود إلى طلب POST هذا هنا.

620
00:44:33,895 --> 00:44:35,890
في الرأس، ستضع

621
00:44:35,890 --> 00:44:41,540
حقل التفويض هذا ثم يتم تضمينه في التفويض،

622
00:44:41,540 --> 00:44:47,540
وستبدأ تشغيله بحامل ثم سلسلة الرمز المميز،

623
00:44:47,540 --> 00:44:50,200
بعد مساحة الحامل،

624
00:44:50,200 --> 00:44:54,215
ومساحة واحدة ثم سلسلة الرمز المميز التالية.

625
00:44:54,215 --> 00:44:58,310
لذا، هذه هي الطريقة التي

626
00:44:58,310 --> 00:45:03,140
ستحمل بها رسائل الطلب رمز JSON Web Token في رأس رسالة الطلب الصادرة.

627
00:45:03,140 --> 00:45:08,220
يمكنك أيضًا تضمين الرمز المميز في نص رسالة الطلب الصادرة.

628
00:45:08,220 --> 00:45:10,310
الآن، لذلك، سيكون عليك تكوين

629
00:45:10,310 --> 00:45:18,210
الخادم السريع الخاص بك خاصة JWT الإضافي في

630
00:45:18,210 --> 00:45:21,120
ملف authenticate.js لقبوله من

631
00:45:21,120 --> 00:45:24,455
الجسم حتى تتذكر أن هناك رأينا أن

632
00:45:24,455 --> 00:45:28,890
JWT الإضافي يدعم العديد من الطرق المختلفة لاستخراج

633
00:45:28,890 --> 00:45:33,695
JSON Web Token من الطلب.

634
00:45:33,695 --> 00:45:35,090
لذلك، هناك تحتاج إلى تحديد،

635
00:45:35,090 --> 00:45:36,670
إذا كنت تريد أن تدرج في الجسم،

636
00:45:36,670 --> 00:45:39,115
تحتاج إلى تحديد تلك المعلومات هناك.

637
00:45:39,115 --> 00:45:42,395
الآن، تفاصيل كيفية القيام بذلك يمكنك استشارة

638
00:45:42,395 --> 00:45:49,885
وثائق وحدة Passport JWT لفهم كيفية القيام بذلك.

639
00:45:49,885 --> 00:45:54,610
في هذه الدورة، سأقوم ببساطة باستخدام ذلك في رأس التفويض

640
00:45:54,610 --> 00:45:59,835
كما أظهرت هنا وهذا يعمل على ما يرام لمعظم الحالات.

641
00:45:59,835 --> 00:46:02,620
الآن، إذا كنت تقوم بتطوير تطبيق ويب أو

642
00:46:02,620 --> 00:46:06,635
تطبيق Angular أو تطبيق Ionic أو NativeScript،

643
00:46:06,635 --> 00:46:09,800
فستحتاج إلى أن تكون قادرًا على تكوين

644
00:46:09,800 --> 00:46:16,615
هذا التطبيق حيث سيتم تضمين JSON Web Token في رأس التفويض.

645
00:46:16,615 --> 00:46:22,215
في الدرس الأخير من هذه الدورة،

646
00:46:22,215 --> 00:46:26,255
وسوف تظهر لك كيفية دمج العميل والخادم،

647
00:46:26,255 --> 00:46:29,310
العميل الذي قمت بتطويره في الدورات السابقة مع

648
00:46:29,310 --> 00:46:32,495
الخادم الذي قمنا بتطويره في هذه الدورة.

649
00:46:32,495 --> 00:46:35,120
مع هذا، نكمل هذا التمرين.

650
00:46:35,120 --> 00:46:37,940
في هذا التمرين، رأينا كيف

651
00:46:37,940 --> 00:46:42,200
يمكننا تكوين تطبيقنا لاستخدام رموز JSON Web Tokens،

652
00:46:42,200 --> 00:46:50,555
ورأينا كيف نتعامل مع مصادقة المستخدم باستخدام JSON Web Token،

653
00:46:50,555 --> 00:46:55,555
باستخدام الدعم من وحدة Passport ووحدة Passport JWT،

654
00:46:55,555 --> 00:46:58,605
ووحدات JSON Web Token Node.

655
00:46:58,605 --> 00:47:01,090
مع هذا، نكمل هذا التمرين.

656
00:47:01,090 --> 00:47:09,110
هذا هو الوقت المناسب بالنسبة لك للقيام Git Commit مع الرسالة Passport JWT.