[MUSIC]
الآن بعد أن فهمنا الحاجة إلى المصادقة الأساسية في
تطبيق Express الخاص بنا، دعونا ننتقل إلى التمرين حيث سنضيف
المصادقة الأساسية إلى خادم الارتباك الذي قمنا بتطويره حتى الآن،
خادم Express REST API.
سوف
نتعلم، على طول الطريق، كيف يمكننا استخدام المصادقة الأساسية داخل الخادم الخاص بنا.
ثم في التدريبات اللاحقة، سنتوسع في هذه الفكرة
لإضافة خدمة مصادقة كاملة لخادم Express REST API.
في هذا التمرين، سوف نذهب إلى خادم الارتباك،
ما كنا نعمل عليه حتى الآن.
لذلك يجب أن تكون قد أكملت تنفيذ المهمة الثانية
الآن، حيث كنت قد وضعت الترقيات ونموذج القادة.
وأيضا تحديث الطرق لجهاز التوجيه زعيم وجهاز
التوجيه الترويجي في تطبيق خادم الارتباك الخاص بك.
حتى داخل هذا الرمز، دعونا نذهب إلى app.js
ثم إضافة في المصادقة الأساسية إلى app.js.
حتى في app.js كما فهمنا عن
الطريقة الوسطى التي يعمل بها في تطبيق Express.
لذلك نبدأ هنا في app.js عن
طريق استيراد جميع وحدات العقدة المختلفة هنا.
ثم بعد ذلك، نبدأ هنا بالقول أولاً app.use logger dev.
لذلك سيتم تطبيق كل هذه على طلبنا.
وبعد ذلك، هذه المكالمة هنا app.use (express.static)
هي ما يمكننا من تقديم بيانات ثابتة من المجلد العمومي.
الآن، يريدون القيام بالمصادقة قبل أن
نسمح للعميل بأن يكون قادرًا على جلب البيانات من خادمنا.
حتى هناك الحق، ونحن سوف ندخل وإضافة شارة المصادقة.
لذلك لاحظت أن كل ما يأتي بعد هذا،
كل الوسيطة التي شنت ويأتي بعد هذه النقطة بالذات.
سيكون علينا أن نذهب من خلال مرحلة التفويض قبل
أن يمكن الوصول إلى هذه البرامج الوسيطة.
حتى هناك الحق، وأنا ذاهب إلى إضافة في app.use
ثم إضافة وظيفة تسمى المصادقة، والتي أنا ذاهب إلى تنفيذها الآن.
لذلك من خلال القيام بذلك، ما نحدده هو الافتراضي،
يمكن للعميل الوصول إلى أي من هذه،
إما موارده الثابتة في المجلد العام، أو أي من الموارد،
والأطباق، والعروض الترويجية، أو القادة، أو حتى المستخدمين كما سنرى لاحقًا.
يجب أن يكون العميل مصرح له أولاً
لذلك هناك حق، وسوف نضيف في المصادقة.
لذلك اسمحوا لي أن أضيف في وظيفة هنا تسمى المصادقة هناك حق.
ثم استخدمه على الفور داخل
تطبيق Express الخاص بنا كوسيطة هناك.
لذا فإن هذه الوظيفة، ستأخذ المصادقة في ثلاث معلمات،
كائن الطلب، كائن المورد، والكائن التالي، نعم.
حتى ضمن هذه الوظيفة اسمحوا لي أولا،
فقط لمعرفة ما هو موجود في رأس الطلب.
اسمحوا لي فقط تسجيل رؤوس الطلبات هناك فقط لإثبات لك،
لأنه بمجرد إضافة رأس التفويض،
فإننا نريد أن نكون قادرين على رؤيته هناك.
لذلك سنقوم أولا بعمل سجل وحدة التحكم،
فقط لمعرفة ما يأتي من جانب العميل.
ثم، اسمحوا لي الحصول على
رأس التفويض الخاص بهم عن طريق قول
req.headers.
لذلك هذا هو المكان الذي سنحصل فيه على رأس التفويض الذي يتم إضافته
من قبل جانب العميل.
إذا لم يكن هناك، من الواضح، ثم نحن بحاجة إلى العمل وفقا لذلك.
لذا، إذا كان AuthHeader خاليًا،
مما يعني أنه لا يوجد رأس مصادقة في
طلبنا الوارد، فمن الواضح أن عميلنا لم يتضمن اسم المستخدم وكلمة
المرور في رأس المصادقة.
لذلك نحن بحاجة لتحدي عملائنا لتقديم هذه المعلومات.
لذلك إذا كان رأس التفويض فارغًا، فسنرى،
var يخطئ خطأًا جديدًا،
لذلك لن نسمح لطلب العميل الخاص بنا بالذهاب إلى أبعد من هذه النقطة.
لذلك سنقول، لم يتم مصادقتك،
وبعد ذلك سوف نتحدى العميل هناك.
لذلك سنقول Res.Setheader، لذلك
سنقوم بتعيين الرأس في
رسالة الاستجابة قائلا www-authenticate،
ومن المحاضرة في وقت سابق،
سترى لماذا نضع هذا
في رأس الاستجابة.
وبعد ذلك سوف نقول خطأ الحالة.401
401 هو الوصول غير المصرح به.
وبعد ذلك سنقوم ببساطة بإنشاء مكالمتنا التالي مع الرأس.
وهذا يعني أنه سيتم تخطي كل هذا والانتقال إلى معالج الأخطاء،
حيث سيقوم معالج الخطأ ببناء رسالة الرد
وإرسالها مرة أخرى إلى موكلي هناك.
لذلك، إذا لم يكن العميل قد شمل رأس المصادقة أو
رأس التفويض، ثم أنا ذاهب لتحدي العميل أن
يطلب منه تزويدي لي رأس التفويض هناك.
لذا إذا لم يكن كذلك، فأنا أعلم أن رأس التفويض موجود.
حتى أبعد من هذه النقطة، سوف نقول var auth،
وأنا ذاهب لاستخراج رأس التفويض.
وبعد ذلك بما أن AuthHeader عبارة عن سلسلة،
سأقوم بتقسيم
هذه القيمة ورأس التفويض هذا، سأقوم بتقسيم القيمة.
حتى كما ترون، المخزن المؤقت تمكنك من تقسيم القيمة ومن
ثم نعطي أيضا ترميز المخزن المؤقت الذي هو ترميز Base64 هنا.
لذلك سنقوم بتحويل ذلك إلى مخزن مؤقت عن طريق تقسيم ذلك إلى قسمين،
باستخدام الفضاء كجزء تقسيم.
لذلك عندما نظرت إلى رأس التفويض، رأيت لماذا
تفصل المساحة بين القيمة الأساسية، ثم تمنحك بقية
السلسلة المشفرة Base64 التي تحتوي على اسم المستخدم وكلمة المرور.
ومن ذلك، نريد استخراج اسم المستخدم وكلمة المرور.
لذلك نحن ذاهبون لتقسيم هذه القيمة، وبعد ذلك سوف ننظر فقط لذلك
عندما تقسم السلسلة باستخدام هذا، فإنه سيتم تقسيم ذلك إلى صفيف.
والعنصر الأول من الصفيف يحتوي على Basic.
العنصر الثاني من الصفيف هو حيث توجد هذه السلسلة المشفرة base64.
لذلك هذا هو السبب في أننا ننظر فقط في العنصر الثاني من هذه الصفيف.
لذلك سيؤدي هذا التقسيم إلى تقسيم السلسلة إلى صفيف من عنصرين.
حتى نتمكن من ذلك، نحن التقاط سلسلة base64 المشفرة من ذلك.
ثم نحن في هذا المخزن المؤقت، وبعد ذلك نحن ذاهبون لتحويل ذلك إلى سلسلة.
ثم مرة أخرى، قم بتقسيم السلسلة مرة أخرى لأن السلسلة
نفسها ستحتوي على اسم المستخدم وكلمة المرور مفصولة بنقطتين.
لذلك، سأقوم بتقسيمه باستخدام القولون
كنقطة تقسيم لهذه السلسلة هنا.
لذلك لاحظ أنني أقوم بتحميل اثنين من الانقسامات هنا، واحد على الفضاء
والثاني، باستخدام القولون الذي يفصل بين اسم المستخدم وكلمة المرور.
لذلك في نهاية هذا المتغير المصادقة يجب أن يكون مصفوفة تحتوي على عنصرين،
اسم المستخدم وكلمة المرور التي يتم استخراجها من سلسلة base64.
لذا عند هذه النقطة، ما سأقوم به هو،
فقط من أجل الوضوح الخاص بك،
سأقول ببساطة
اسم المستخدم var = auth [0] ثم،
var password = auth [1].
حتى الآن لقد استخرجت اسم المستخدم وكلمة المرور من رأس التفويض الخاص بي.
الآن سأستخدم قيمة افتراضية لاسم المستخدم وكلمة
المرور في هذا التنفيذ.
في وقت لاحق، سنرى أنه يمكننا السماح للمستخدمين بإنشاء اسم المستخدم وكلمة
المرور الخاصة بهم.
ولكن في الوقت الحالي، أنا فقط ذاهب لاستخدام،
اسم المستخدم وكلمة المرور المشفرة كمشرف.
وكلمة المرور ستكون مجرد كلمة مرور.
لهذا التمرين الأساسي،
سنستخدم هذا كاسم المستخدم وكلمة المرور الافتراضيين.
إذا كان اسم المستخدم الذي أحصل عليه هو المشرف وكلمة المرور هي كلمة مرور السلسلة.
ثم أنا على ما يرام للسماح
سيتم تمرير طلب العميل من خلال إلى الوسيطة التالية لذلك، سأقول التالي.
لذلك عندما أقول بعد ذلك، وهذا يعني أنه من المصادقة
سيتم تمرير طلبهم على المجموعة التالية من البرامج الوسيطة هنا
ثم سيحاول Express مطابقة الطلب المحدد لكانت
برامج وسيطة محددة تخدم هذا الطلب.
لذلك هذا هو المكان الذي سنسمح له بالمرور.
إذا لم يكن الأمر كذلك، فهذا يعني أن اسم المستخدم وكلمة
المرور لم يتطابقان مع الطلب
واسم المستخدم وكلمة المرور الافتراضية التي أقوم بإعدادها.
لذلك هذا يعني أن هناك خطأ.
حتى في هذه الحالة، أنا ذاهب إلى مرة أخرى يسبب خطأ هنا،
لذلك سنقول آخر، خطأ.
لذلك سنقوم مرة أخرى بإنشاء خطأ ثم تحدي العميل لإرسال
معلومات التفويض الصحيحة واسم المستخدم وكلمة المرور هنا.
إذن هذا كل شيء
هذا القليل من البرامج الوسيطة التي قمنا بتنفيذها للتو هنا،
الوسيطة التخويل التي قمنا بتنفيذها للتو هنا.
كافية لتنفيذ المصادقة الأساسية داخل التطبيق خارج.
لذلك بعد إجراء هذه التغييرات،
دعونا حفظ التغييرات وبعد ذلك سنرى كيف يعمل هذا في الواقع العملي.
دعونا حفظ التغييرات.
وبعد ذلك سنذهب ونبدأ الخادم الخاص بنا
الآن، الذهاب إلى المحطة، بالطبع،
تأكد من أنك خادم MongoDB قيد التشغيل.
وإلا، لن يتم بدء تشغيل خادم Express الخاص بك.
لذلك لدي بداية npm نوع موجه،
ومن ثم سيكون خادم Express الخاص بك قيد التشغيل.
الآن، افتح في نافذة التصفح المتخفي في متصفحك.
السبب في أنني أطلب منك استخدام نافذة التصفح المتخفي هو أنه عند كتابة
اسم المستخدم وكلمة المرور، سيتم تخزينه مؤقتًا بواسطة متصفحك.
لذلك إذا كنت تستخدم نافذة التصفح المتخفي، إذا قمت بإعادة تشغيل المتصفح...
ثم سيتم مسح ذاكرة التخزين المؤقت تلقائيا،
لذلك لن يتم تذكر هذه المعلومات.
الآن ماذا يحدث إذا قمت بكتابة اسم المستخدم وكلمة المرور، فسيتم تخزينه مؤقتًا،
لذلك في وقت لاحق عند محاولة الوصول إلى الخادم،
سيتم إرسال المعلومات المخزنة مؤقتًا تلقائيًا في الطلب الذي تقوم بإنشاؤه.
ولهذا السبب من المهم
استخدام نافذة التصفح المتخفي فقط لتظهر لك أن المصادقة الأساسية تعمل.
لذلك في شريط عنوان المتصفح الخاص بك، دعنا نكتب المضيف المحلي: 3000، ونرى ما يحدث.
لذلك عند كتابة لوكالهوست: 3000 ترى على الفور أن المتصفح الخاص بك للملوثات العضوية الثابتة
هذا الحوار في الأعلى يطلب منك كتابة اسم المستخدم وكلمة المرور.
إذا كنت لا تكتبه، اسمحوا لي أن اكتب في بعض اسم المستخدم العشوائي ثم نرى ما يحدث.
لذلك إذا قمت بكتابة اسم مستخدم وكلمة مرور عشوائيين،
فسترى أن الطلب مرفوض.
لا يُسمح لي بالوصول إلى الخادم،
ثم إذا كان الخادم سيقول مرة أخرى أن العميل غير مأذون به.
وهكذا سوف يعود ويتحدانا مرة أخرى من أجل المصادقة الصحيحة.
لذلك اسمحوا لي أن اكتب في المصادقة الحالية.
لذلك اسمحوا لي أن اكتب في المشرف وكلمة المرور ككلمة مرور.
ثم قم بتسجيل الدخول، وسترى أنه الآن
سيسمح لك تطبيق Express بالدخول والوصول إلى القيمة الافتراضية،
والتي في هذه الحالة هو ملف Index.html من هذا المجلد العمومي الثابت.
الآن، نفس الشيء إذا كنت تحاول الوصول إلى المضيف المحلي: الأطباق
دون إذن، فلن تعمل.
وسأثبت لك ذلك باستخدام ساعي البريد خلال دقيقة
الآن بعد أن رأينا كيف تعمل المصادقة، دعونا نذهب
وننظر إلى ما حدث على وحدة التحكم على موقع الخادم لدينا.
الذهاب إلى وحدة التحكم على موقع الخادم لدينا ترى أن مجموعة كاملة من المعلومات
قد طبعت هنا، لذلك كما رأيت،
كنا تسجيل الخروج من رؤوس الطلبات هنا.
لذلك هذا هو الطلب الأول الذي جاء مع رأس الطلب.
وهنا ترى أنه لا يوجد رأس تفويض في الطلب.
وهكذا رفض الخادم الخاص بك ذلك مع 401 يطلب من عميلنا أن يأذن لنفسه.
المرة الثانية أيضًا لأننا لم نكتب التفويض الصحيح الذي
رفضه الخادم.
بالطبع، تلاحظ الآن أنه في الرأس، هناك حق، يتم
تضمين التفويض بالفعل هناك، وترى الطريقة التي يتم بها تضمين التفويض.
وتقول Basic مفصولة بمسافة،
ومفصولة بسلسلة 64 بت المشفرة التي تحتوي على اسم المستخدم وكلمة المرور.
وبعد ذلك، نرى أن الخادم
رفض هذا لأن التفويض كان خاطئا في تلك المرحلة.
الآن في وقت لاحق، كتبنا في اسم المستخدم وكلمة المرور الصحيحين.
لذلك هناك الحق في الطلب الثالث الذي جاء في، كتبنا اسم المستخدم وكلمة
المرور الصحيحين.
وهكذا، لهذا السبب ترى أن رأس الطلب يحتوي على التفويض،
وتستخدم هذه السلسلة الترميز الصحيح لاسم المستخدم وكلمة المرور.
كيف لي أن أعرف ذلك؟
حسنا، لقد عبر فحص ومعرفة ذلك،
وهذا هو النسخة الأجنبية المشفرة الأساسية من السلسلة هناك.
وسوف نرى أيضا أن من صورة ساعي البريد لدينا أو ما.
الآن، ترى أن الطلب قد تم
قبوله وإرجاع القيمة بشكل صحيح.
ثم بالطبع، في وقت لاحق، طلب العميل للحصول على رمز فافيكون، الرمز.
وبما أننا لا نملك favicon في جانب الخادم الخاص بنا، فإنه يرد مع 404
وبالطبع لا يتم عرض الرمز المفضل لديك في شريط العناوين.
لذلك هذا جيد، ولكن لاحظ على وجه الخصوص.
جاءت تلك المطلوبة بشكل خاص،
حيث تم تضمين رأس التفويض الصحيح.
وهكذا، كان ناجحا في ذلك الوقت.
دعونا نحاول ونرى كيف يمكننا أن نفعل الشيء نفسه مع خريطة البريد.
حتى هنا لدي نافذة خريطة البريد الخاصة بي مفتوحة.
وهكذا في نافذة ساعي البريد سأكتب في
الحصول على المضيف المحلي: إلى الخادم الخاص بي، ومن ثم إرسال الطلب
وستلاحظ على الفور أنه يتحدى قائلا 401 غير مصرح به.
لذلك هذه هي رسالة الرد من جانب الخادم،
لذلك لاحظ ما يحفظه، 401 غير مصرح به.
وتقول أن الاستجابة يجب أن تتضمن حقل رأس WW-Authenticate.
وهذا سيكون تحديا للعميل لإرسال معلومات التفويض
واسم المستخدم وكلمة المرور.
حتى معاينة هذا، ونحن نرى أن الجملة لم يتم مصادقتها
ثم رمز 401 هنا.
الآن تبحث في رؤوس رسالة الرد.
عندما تنظر إلى رأس رسالة الرد، يمكنك أن ترى على وجه الخصوص
هذا الرأس المدرجة هناك، وهو www.authenticatebasic.
الآن، كيف نفعل المصادقة أو التفويض في المشاركة؟
لذا هذا هو المكان الذي سيذهبون إليه أسفل هذا الصندوق هنا،
سترى هذا التفويض هنا.
وعندما تنقر على التفويض، فإنه يقول الآن NO AUTH..
دعونا نستخدم المصادقة الأساسية.
لذلك عندما أقول المصادقة الأساسية، وسوف
تعطيني هذين الحقلين هنا حيث يمكنني كتابة اسم المستخدم وكلمة المرور.
اسمحوا لي أن اكتب اسم المستخدم وكلمة المرور الصحيحين.
لذلك سأقول اسم المستخدم المشرف، كلمة المرور هي كلمة المرور P-A-S-S-W-O-R-D.
لذا يمكنكم أن تروا ذلك، هذه بالضبط كلمة السر التي لدينا هنا.
لذلك بمجرد كتابة اسم المستخدم وكلمة المرور، سيقولون طلب التحديث.
لذلك عندما أنقر على طلب التحديث، سترى أنه على الفور في الرأس،
سترى أن
هناك هذا الحقل هنا الذي تمت إضافته هنا قائلا التفويض.
وبعد ذلك، سترى ما هذا الجزء الثاني، القيمة التي يمكن أن تأخذ.
وتقول الأساسية ومساحة، ثم هذه السلسلة معينة.
لذلك إذا قمت بفحص هذه السلسلة المعينة هنا، فستكون هذه
هي السلسلة الدقيقة التي ستراها في رأس رسالة الطلب الناجحة.
لاحظ ما تقوله هذه السلسلة.
يقول YWR شيء, ومن ثم ينتهي مع Q يساوي.
الذهاب إلى محطتنا، ترى أن الطلب الناجح
يحتوي بالفعل على تلك السلسلة بالضبط هنا.
وتقول YWR ومن ثم تنتهي مع Q يساوي هناك.
لذلك من خلال كتابة المعلومات في التفويض ثم النقر
على طلب التحديث، تتم إضافة هذه المعلومات إلى رؤوس التخويل.
حتى الآن هذا هو طلب الحصول،
وأنا لست بحاجة إلى نوع المحتوى هناك لأنه لا يحتوي على أي جسم.
حتى الآن بعد أن تم تضمين التفويض،
دعنا نرسل الطلب الآن بشكل صحيح ومن ثم سترى أن
الرد القادم من موقع الخادم سيحتوي على ملف الفهرس كما تتوقع.
الآن، اسمحوا لي أن حذف التفويض.
الآن هذا هو السبب في أن Postmap يساعدني على التحقق من هذه الأشياء
بسهولة أكبر، يمكنني حذف التفويض ثم إرسال الطلب.
وسيظل يحتوي على هذا التفويض،
لأنني كتبت هذا في حقل التفويض.
لذلك اسمحوا لي أن مسح التفويض من هناك، ومن ثم إرسال الطلب هنا.
ومن ثم تقول أنك غير مصدق.
وبالمثل، إذا أرسلت الطلب إلى الأطباق. في
السابق، كان هذا يعمل بشكل جيد ولكن
الآن ترى أننا منعون من الوصول إلى نقطة النهاية /الأطباق أيضا.
ونفس الشيء مع جميع بقية بقية نقاط نهاية أبريل أيضا.
لن يسمح لك بالوصول، لأن الوسيطة التخويل تأتي قبل
الوصول إلى أي من نقاط النهاية هذه
في قائمة البرامج الوسيطة لخادمك السريع.
حتى الآن إذا قمت الآن بتضمين التفويض،
ثم قم بتحديث طلبي ثم أرسل الطلب إلى الخادم،
فسوف يستجيب الخادم.
الآن من الواضح في هذه اللحظة بلدي قاعدة البيانات فارغة،
لذلك هو الرد مع مجموعة فارغة هناك.
ولكن الآن ذهب الطلب بنجاح،
وأنا قادرة على استرداد المعلومات من جورب الخادم.
لذلك هذا هو مظاهرة سريعة من
التفويض الأساسي في التطبيق الخاص بنا للراحة أبر.
مع هذا، نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة
لك للقيام تعليق الحصول مع رسالة المصادقة الأساسية.
[ موسيقى]