1
00:00:03,950 --> 00:00:06,540
في الدروس السابقة،

2
00:00:06,540 --> 00:00:10,260
رأينا استراتيجيات مختلفة لمصادقة المستخدم.

3
00:00:10,260 --> 00:00:12,555
بدأنا بالمصادقة الأساسية،

4
00:00:12,555 --> 00:00:16,500
ثم انتقلنا إلى ملفات تعريف الارتباط والجلسات السريعة

5
00:00:16,500 --> 00:00:20,805
كوسيلة لمصادقة وتعقب المستخدمين.

6
00:00:20,805 --> 00:00:24,445
في هذا الدرس سوف ننظر إلى Passport،

7
00:00:24,445 --> 00:00:29,450
وحدة العقدة التي تجعل المصادقة سهلة جدا

8
00:00:29,450 --> 00:00:34,880
وغير مزعجة ومباشرة لتكوين في التطبيق الخاص بك.

9
00:00:34,880 --> 00:00:39,125
Passport ليس سوى برنامج وسيط مصادقة يدعم

10
00:00:39,125 --> 00:00:43,330
العديد من الاستراتيجيات التي يمكن استخدامها لمصادقة المستخدم،

11
00:00:43,330 --> 00:00:47,505
بما في ذلك استراتيجية محلية مثل استخدام اسم المستخدم وكلمة المرور،

12
00:00:47,505 --> 00:00:54,530
أو حتى مصادقة طرف ثالث أو استخدام OAuth أو OAuth 2.0،

13
00:00:54,530 --> 00:00:57,165
مثل استخدام Facebook أو Twitter أو

14
00:00:57,165 --> 00:01:00,515
أو +Google، وما إلى ذلك.

15
00:01:00,515 --> 00:01:03,600
سننظر في بعض التفاصيل حول Passport،

16
00:01:03,600 --> 00:01:06,995
المصادقة المحلية المدعومة Passport.

17
00:01:06,995 --> 00:01:10,520
وفي التمرين التالي،

18
00:01:10,520 --> 00:01:13,970
سنقوم بتحديث طلبنا للاستفادة من

19
00:01:13,970 --> 00:01:19,025
وحدات الجوازات والعقدة المحلية لتمكين.

20
00:01:19,025 --> 00:01:23,700
المصادقة المحلية باستخدام اسم المستخدم وكلمة المرور.

21
00:01:23,920 --> 00:01:27,670
لذلك، كما ذكرت قليلا في وقت سابق،

22
00:01:27,670 --> 00:01:33,185
Passport هو الوسيطة المصادقة مفيدة جدا لتطبيقات Node.js.

23
00:01:33,185 --> 00:01:36,675
فإنه يجعل من الأسهل لتنفيذ المصادقة.

24
00:01:36,675 --> 00:01:39,274
كما رأينا في التدريبات السابقة،

25
00:01:39,274 --> 00:01:45,215
تنطوي المصادقة على الكثير من التعليمات البرمجية المتكررة والمهام المتكررة التعامل مع الأخطاء

26
00:01:45,215 --> 00:01:48,440
ووضع طرق للتحقق من

27
00:01:48,440 --> 00:01:52,580
مصادقة المستخدم ومن ثم مصادقة المستخدم وهلم جرا.

28
00:01:52,580 --> 00:01:56,090
يتم تبسيط كل هذا داخل Passport باستخدام

29
00:01:56,090 --> 00:02:00,040
استراتيجيات مختلفة يمكن استخدامها لمصادقة المستخدمين.

30
00:02:00,040 --> 00:02:04,220
يمكنك استخدام استراتيجية محلية على سبيل المثال تقوم على

31
00:02:04,220 --> 00:02:09,440
تسجيل المستخدمين في النظام الخاص بك باستخدام اسم المستخدم وكلمة المرور،

32
00:02:09,440 --> 00:02:14,030
ثم المصادقة بعد ذلك باستخدام اسم المستخدم وكلمة المرور.

33
00:02:14,030 --> 00:02:18,965
يدعم Passport أيضًا المصادقة المستندة إلى OpenID

34
00:02:18,965 --> 00:02:22,805
أو المصادقة المستندة إلى OAuth أو OAuth 2.0،

35
00:02:22,805 --> 00:02:27,135
كما يدعمها مصدقون من جهات خارجية مثل Facebook و

36
00:02:27,135 --> 00:02:29,535
Twitter و Google+ وما إلى ذلك.

37
00:02:29,535 --> 00:02:32,465
يمكننا أيضًا استخدام ما يسمى

38
00:02:32,465 --> 00:02:37,880
برموز ويب JSON كطريقة أخرى للمصادقة تسمى المصادقة المستندة إلى الرمز المميز.

39
00:02:37,880 --> 00:02:42,485
سنلقي نظرة على المصادقة المستندة إلى الرمز المميز في الجزء الأخير من هذا الدرس.

40
00:02:42,485 --> 00:02:46,465
أيضا، Passport يدعم الجلسات.

41
00:02:46,465 --> 00:02:51,785
وكما رأينا في التمرين السابق والدرس السابق، فإن

42
00:02:51,785 --> 00:02:55,640
الجلسات السريعة هي طريقة سهلة لتتبع المستخدمين

43
00:02:55,640 --> 00:03:01,130
على جانب الخادم والقدرة على خدمة الطلبات الواردة من العملاء.

44
00:03:01,130 --> 00:03:03,330
للاستفادة من Passport، بالطبع،

45
00:03:03,330 --> 00:03:05,515
سنقوم بتثبيت وحدة Passport.

46
00:03:05,515 --> 00:03:08,175
سنقوم أيضا، في التمرين التالي،

47
00:03:08,175 --> 00:03:11,195
بتثبيت وحدة Passport-Local

48
00:03:11,195 --> 00:03:15,060
لتوفير الاستراتيجية المحلية لمصادقة المستخدم.

49
00:03:15,060 --> 00:03:19,885
استخدام جواز السفر في طلبنا هو مستقيم إلى حد ما إلى الأمام.

50
00:03:19,885 --> 00:03:23,500
على المسارات التي نريد إجراء المصادقة عليها،

51
00:03:23,500 --> 00:03:27,110
نقوم فقط بتحديد مصادقة جواز السفر ثم تحديد

52
00:03:27,110 --> 00:03:33,320
استراتيجية المصادقة المحددة التي نريد استخدامها لمصادقة المستخدم.

53
00:03:33,320 --> 00:03:34,810
وكمثال هنا،

54
00:03:34,810 --> 00:03:36,590
ترى أننا

55
00:03:36,590 --> 00:03:41,950
نطبق مصادقة محلية عن طريق القول مصادقة جواز السفر والمحلية.

56
00:03:41,950 --> 00:03:46,530
وهكذا فإنه يستخدم الاستراتيجية المحلية لمصادقة المستخدمين.

57
00:03:46,530 --> 00:03:49,725
إذا كانت المصادقة ناجحة،

58
00:03:49,725 --> 00:03:53,870
ثم ينتقل الوسيطة إلى الخطوة التالية،

59
00:03:53,870 --> 00:03:57,435
حيث يمكننا زيادة معالجة الطلب الوارد.

60
00:03:57,435 --> 00:04:03,240
لذلك، عند الانتهاء من المصادقة الناجحة لجواز سفر المستخدم،

61
00:04:03,240 --> 00:04:09,300
يضيف Passport نفسه خاصية المستخدم إلى رسالة الطلب.

62
00:04:09,300 --> 00:04:15,110
لذلك يصبح req.user متاحًا لنا مع معلومات المستخدم هناك،

63
00:04:15,110 --> 00:04:17,960
والتي يمكننا استخدامها لاحقًا داخل

64
00:04:17,960 --> 00:04:23,850
تطبيقنا السريع للتعامل مع الطلب الوارد من مستخدمين محددين.

65
00:04:23,850 --> 00:04:30,110
لذلك هذا يساعدنا بسهولة على تحديد العميل الذي أرسل الطلب إلى

66
00:04:30,110 --> 00:04:32,840
طلبنا وبالتالي خدمة

67
00:04:32,840 --> 00:04:37,525
الطلب وفقًا لذلك بناءً على هوية المستخدم.

68
00:04:37,525 --> 00:04:40,140
جنبا إلى جنب مع Passport، سنقوم بتثبيت

69
00:04:40,140 --> 00:04:45,225
وحدة أخرى ذات صلة بجواز السفر تسمى Passport-

70
00:04:45,225 --> 00:04:49,490
يدعم Passport-Local استراتيجية تسمى

71
00:04:49,490 --> 00:04:52,190
الاستراتيجية المحلية لمصادقة المستخدمين

72
00:04:52,190 --> 00:04:55,135
باستخدام تركيبة كلمة مرور اسم المستخدم القياسية.

73
00:04:55,135 --> 00:04:58,230
لذلك قمنا بإعداد مخطط المستخدم،

74
00:04:58,230 --> 00:04:59,540
كما فعلنا من قبل،

75
00:04:59,540 --> 00:05:05,030
ثم استخدام مخطط المستخدم أو النموذج لتتبع اسم المستخدم

76
00:05:05,030 --> 00:05:11,240
وكلمة المرور ثم Passport-Local يعتمد على ذلك للتحقق من اسم المستخدم وكلمة المرور.

77
00:05:11,240 --> 00:05:12,815
لذلك، لتثبيته مرة أخرى،

78
00:05:12,815 --> 00:05:13,985
كونها وحدة عقدة،

79
00:05:13,985 --> 00:05:19,490
نقوم بتثبيته باستخدام الإجراء القياسي لتثبيت وحدة عقدة Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
بمجرد تثبيت وحدة Node Passport-Local

81
00:05:23,075 --> 00:05:30,750
، نحتاج إلى تحديد الاستراتيجية المحلية وكيفية استخدامها بالفعل داخل Passport.

82
00:05:30,750 --> 00:05:33,465
لذلك، لتحديد استراتيجية محلية، سنقول؛

83
00:05:33,465 --> 00:05:39,290
passport.use، وبالتالي هذا سوف يسمح لنا لتحديد الاستراتيجية المحلية لاستخدامها.

84
00:05:39,290 --> 00:05:42,705
لذلك، بعد تثبيت Passport-Local،

85
00:05:42,705 --> 00:05:46,900
سنعلن عن استراتيجية محلية جديدة ثم

86
00:05:46,900 --> 00:05:53,725
نوفر وظيفة التحقق المقابلة التي يتم استخدامها للتحقق من المستخدم.

87
00:05:53,725 --> 00:05:59,585
إذا كنت تستخدم MongoDB كمتجر خلفي، فعندئذ،

88
00:05:59,585 --> 00:06:02,660
لمساعدتنا في استراتيجية Passport-Local،

89
00:06:02,660 --> 00:06:06,045
هناك وحدة أخرى تسمى Passport-Local Mongoose.

90
00:06:06,045 --> 00:06:10,150
توفر وحدة Passport-Local

91
00:06:10,150 --> 00:06:15,290
Mongoose المكون الإضافي الذي سيبسط تسجيل الدخول إلى اسم المستخدم وكلمة المرور.

92
00:06:15,290 --> 00:06:19,250
عن طريق تثبيت المكون الإضافي Passport-Local Mongoose

93
00:06:19,250 --> 00:06:23,330
ثم استخدامه عندما نحدد مخطط المستخدم

94
00:06:23,330 --> 00:06:29,605
والنموذج، وبالتالي باستخدام دعم وحدة Passport-Local

95
00:06:29,605 --> 00:06:33,995
Mongoose، يضيف هذا المكون الإضافي للنمس في اسم المستخدم

96
00:06:33,995 --> 00:06:40,080
وطريقة مشفرة لتخزين كلمة المرور داخل مستخدمنا نموذج.

97
00:06:40,080 --> 00:06:43,205
يتم التشفير باستخدام التجزئة

98
00:06:43,205 --> 00:06:47,060
على كلمة المرور التي نستخدمها لتسجيل المستخدمين،

99
00:06:47,060 --> 00:06:50,595
ويستخدم التجزئة نفسها حقل الملح.

100
00:06:50,595 --> 00:06:54,140
حتى إذا كنت تعرف أي شيء عن التشفير،

101
00:06:54,140 --> 00:06:57,620
في التشفير، والملح هو سلسلة عشوائية التي يتم استخدامها لتنفيذ

102
00:06:57,620 --> 00:07:02,135
عملية التجزئة على كلمة المرور للتخزين.

103
00:07:02,135 --> 00:07:07,590
لذلك يتم تخزين كلمة المرور المجزأة نفسها بالفعل في قاعدة بيانات MongoDB الخاصة بنا.

104
00:07:07,590 --> 00:07:09,815
لا يتم تخزين كلمة المرور الفعلية.

105
00:07:09,815 --> 00:07:14,420
لذلك، عندما يحاول المستخدم المصادقة باستخدام اسم المستخدم وكلمة المرور،

106
00:07:14,420 --> 00:07:16,820
سيتم تجزئة كلمة المرور مرة أخرى ثم مقارنتها مع

107
00:07:16,820 --> 00:07:20,490
كلمات المرور المجزأة المخزنة في قاعدة البيانات الخاصة بنا وهذا

108
00:07:20,490 --> 00:07:28,040
كله يتم توفيره من قبل البرنامج المساعد Mongoose، Passport-Local Mongoose.

109
00:07:28,040 --> 00:07:32,690
بالإضافة إلى ذلك، يضيف Mongoose Passport-Local أيضًا أساليب إضافية

110
00:07:32,690 --> 00:07:37,535
مفيدة جدًا لتكوين استراتيجية Passport-Local.

111
00:07:37,535 --> 00:07:43,095
لذلك داخل تطبيقنا عندما نحدد مخطط المستخدم والنموذج،

112
00:07:43,095 --> 00:07:46,030
سنقوم باستيراد Passport-Local Mongoose ثم نضيف

113
00:07:46,030 --> 00:07:53,000
كمكون إضافي لمخطط المستخدم.

114
00:07:53,000 --> 00:07:56,240
تضيف وحدة Passport-Local Mongoose هذه تلقائيًا كما قلت حقل اسم المستخدم وكذلك

115
00:07:56,240 --> 00:08:03,690
حقل تخزين كلمة المرور المجزأة باستخدام قيمة الملح التي تستخدمها للقيام بالتجزئة،

116
00:08:03,690 --> 00:08:08,240
وتوفر أيضًا طرقًا إضافية

117
00:08:08,240 --> 00:08:13,010
تمكننا من تكوين استراتيجية Passport-Local الخاصة بنا.

118
00:08:13,010 --> 00:08:16,945
إذا كنا نستخدم وحدة Passport-Local Mongoose،

119
00:08:16,945 --> 00:08:19,185
فإن الاستراتيجية المحلية،

120
00:08:19,185 --> 00:08:23,990
يدعم المكون الإضافي Passport-Local Mongoose على

121
00:08:23,990 --> 00:08:30,020
نموذج المستخدم طريقة مصادقة ستقوم تلقائيًا بالمصادقة.

122
00:08:30,020 --> 00:08:35,195
في الشريحة السابقة كنت قد أظهرت لكم كيف يمكننا تنفيذ الاستراتيجية المحلية.

123
00:08:35,195 --> 00:08:39,690
الآن يتم توفير هذا تلقائيا لك من قبل Passport-Local Mongoose

124
00:08:39,690 --> 00:08:44,285
ببساطة عن طريق قول جديد localstrategy user.

125
00:08:44,285 --> 00:08:50,730
ثم لا نحتاج إلى كتابة رمز المصادقة بشكل صريح للاستراتيجية المحلية.

126
00:08:50,730 --> 00:08:55,445
أيضا إذا كنت تستخدم جلسات معتمدة من قبل Passport

127
00:08:55,445 --> 00:08:58,555
، ثم، لجلسات الدعم،

128
00:08:58,555 --> 00:09:02,630
يجب إجراء تسلسل معلومات المستخدم

129
00:09:02,630 --> 00:09:06,840
ليتم تخزينها مع معلومات الجلسة على جانب الخادم، وبعد ذلك،

130
00:09:06,840 --> 00:09:08,690
عندما يأتي الطلب،

131
00:09:08,690 --> 00:09:10,140
من معرف الجلسة،

132
00:09:10,140 --> 00:09:13,940
معلومات المستخدم يحتاج إلى إلغاء تسلسلها لاستخراج

133
00:09:13,940 --> 00:09:20,160
معلومات المستخدم من معلومات جلسة العمل التي يتم تخزينها على جانب الخادم.

134
00:09:20,160 --> 00:09:22,145
الآن

135
00:09:22,145 --> 00:09:27,440
يتم دعم عملية التسلسل وإلغاء التسلسل هذه بالفعل بواسطة Passport-Local Mongoose من خلال

136
00:09:27,440 --> 00:09:29,990
المستخدم التسلسلي

137
00:09:29,990 --> 00:09:36,480
وطرق المستخدم إلغاء التسلسل المتوفرة من المكون الإضافي Passport-Local Mongoose.

138
00:09:36,480 --> 00:09:38,095
لذلك بعد أن رأينا هذا،

139
00:09:38,095 --> 00:09:42,680
سنرى الآن في التمرين مدى سهولة تكوين

140
00:09:42,680 --> 00:09:48,120
الاستراتيجية المحلية لمصادقة المستخدمين باستخدام

141
00:09:48,120 --> 00:09:54,490
وحدات Passport و Passport-Local و Passport-Local Mongoose Node.