الآن بعد أن فهمنا جواز السفر وكيف يضيف جواز السفر
في وسيط مصادقة بسيطة لتطبيق NodeJS لدينا،
ويوفر مرونة سهلة لتكوين
طريقة ويوفر استراتيجيات مختلفة لمصادقة المستخدم،
دعونا نذهب في رحلة مع جواز سفرنا.
للبدء في هذا التمرين،
كخطوة أولى، دعونا تثبيت
وحدات عقدة جواز السفر، وجواز السفر المحلي وجواز السفر المحلي-النمس في خادم الارتباك لدينا.
حتى في نوع موجه npm
instal_passport،
جواز السفر المحلي، جواز السفر المحلي النمس mnus ناقص حفظ وتثبيت هذه الوحدات الثلاث.
كما ترون في هذه اللحظة نحن نبدأ مع جواز السفر 0.4.0،
جوازات السفر المحلية 1.0.0 وصفر المحلي-النمس 5.0.1 الإصدارات في هذه الدورة.
الآن بعد أن قمنا بتثبيت جواز السفر، وجواز السفر المحلي، وجواز السفر المحلي-النمس،
دعونا نذهب إلى خادم الارتباك والذهاب إلى ملف user.js.
سنقوم بتحديث مخطط المستخدم ونموذج لاستخدام جواز السفر المحلي-النمس.
للقيام بذلك، هنا سوف نقول
فار PassportLocalMongoose
تتطلب جواز السفر المحلي-النمس.
لذلك سوف نقوم بتثبيت
البرنامج المساعد النمس في تطبيقنا ويمكننا إزالة اسم المستخدم وكلمة
المرور لأن هذه سيتم إضافتها تلقائيا من قبل
المساعد passport-local-mongoose هنا
واستخدام ذلك كمكون إضافي في مخطط النمس ونموذج.
سنقول المستخدم المكونات في وجواز السفر المحلي النمس.
لذا، سيؤدي ذلك تلقائيًا كما قلت إلى إضافة دعم
لاسم المستخدم والتخزين المجزأ لكلمة المرور باستخدام
التجزئة والملح وإضافة
طرق إضافية على مخطط المستخدم
والنموذج المفيد لمصادقة جواز السفر.
لذلك بمجرد الانتهاء من تحديث ملف user.js ثم في مجلد
مشروعنا، سنقوم بإنشاء ملف جديد وتسميته على أنه authenticate.js.
في ملف authentic.js،
اسمحوا لي استيراد جواز السفر.
لذلك سوف نقول تتطلب جواز سفر ونحن في طريقنا
لاستخدام هذا الملف لتخزين استراتيجيات المصادقة التي سنقوم بتكوينها.
لذلك سوف نقول فار. تتطلب LocalStrategy
جواز السفر المحلي، لذلك تقوم الوحدة المحلية بجواز السفر بتصدير استراتيجية يمكننا استخدامها لتطبيقنا.
لذلك سنقول Passport-local.strategy
وبعد ذلك سنقوم باستيراد المستخدم من نماذج المستخدم.
دعونا الآن تكوين جواز السفر مع الاستراتيجية المحلية الجديدة
ومن ثم سنقوم بتصدير هذا من هذا الملف لأن هذا سيكون وحدة العقدة.
لذلك سنقول exports.local وسنقول جواز سفر
ويمكنك أن ترى أن جواز السفر يدعم الأساليب المختلفة
هنا لذلك سنقول استخدام جواز السفر ويقول
LocalStrategy جديد ومن ثم هذا هو المكان الذي تأتي فيه الوظائف التي يدعمها جواز السفر المحلي-النمس لمساعدتنا.
لذا ستحتاج الاستراتيجية المحلية إلى تزويدها بوظيفة التحقق.
داخل هذه الوظيفة سنقوم بالتحقق من المستخدم.
سيتم استدعاء وظيفة التحقق هذه مع اسم المستخدم وكلمة المرور التي
سيتم استخراج جواز السفر من طلبنا الوارد.
الآن في الطلب الوارد لـ LocalStrategy،
يجب توفير اسم المستخدم وكلمة المرور في نص الرسالة في شكل سلسلة Json.
مرة أخرى لأننا نفعل محلل
الجسم بحيث سيتم إضافتها إلى نص الرسالة ومن ثم من هناك جواز سفر
سنقوم باسترداد ذلك ومن ثم استخدام ذلك وتوفير اسم المستخدم وكلمة المرور
كمعلمات لوظيفة التحقق التي سنقوم بتوفيرها إلى لوكالستراتيدج.
نظرًا لأننا نستخدم المكون الإضافي لنمس جواز السفر،
فإن المكون الإضافي للنمس نفسه يضيف هذه الوظيفة تسمى user.authenticate.
لذلك يضيف هذا الأسلوب إلى مخطط المستخدم والنموذج.
سنقوم بتزويد ذلك كوظيفة من
شأنها أن توفر المصادقة لـ LocalStrategy.
الآن إذا كنت لا تستخدم
passport-local-mongoose عند إعداد مكون إضافي للنمس قمنا به،
إذا كنت لا تستخدم ذلك،
فأنت بحاجة إلى كتابة وظيفة مصادقة المستخدم الخاصة بك هنا.
في المحاضرة في وقت سابق،
كنت قد أظهرت لك وظيفة مصادقة المستخدم بسيطة
التي يمكن استخدامها هنا ولكن واحد الذي يتم
توفيره من قبل وحدة جواز السفر المحلية النمس هو أكثر
شمولا وهكذا ما سوف نستفيد منه في التطبيق لدينا.
أيضا بما أننا لا نزال نستخدم جلسات لتتبع المستخدمين في تطبيقنا،
نحتاج إلى تسلسل وإلغاء تسلسل المستخدم.
لذلك هذا يأخذ أساسا معلومات المستخدم.
الآن تذكر أن مصادقة جواز السفر سوف تحميل req.user أو خاصية المستخدم إلى
رسالة الطلب وحتى
يتم تسلسل معلومات المستخدم وإلغاء تسلسلها تتحقق باستخدام
هذا القول تسلسل المستخدم وجواز السفر إلغاء تسلسل المستخدم.
كما سنقول المستخدم ديسيرياليز المستخدم.
يتم توفير هاتين الوظيفتين اللتين يقومان بتسلسل المستخدم وإلغاء التسلسل
للمستخدم على مخطط المستخدم ونموذجه من خلال استخدام المكون الإضافي للجواز المحلي للنمس هنا.
لذلك هذا سوف تأخذ الرعاية من كل ما هو مطلوب
لدعمنا للجلسات في جواز السفر.
لذلك بمجرد الانتهاء من هذا التحديث إلى ملف authenticate.js،
سوف يتطلب هذا الملف أينما كان هناك حاجة لنا لاستخدامها في المصادقة لدينا.
التالي الذهاب إلى ملف users.js،
في ملف users.js،
سنقوم أولا استيراد جواز السفر.
لذلك سنقول فار جواز سفر تتطلب جواز سفر.
بعد ذلك، لأننا نستخدم المكون الإضافي للنمس المحلي لجواز السفر،
فإن المكون الإضافي
للنمس نفسه يوفر بعض المقاييس المفيدة لنا لاستخدامها في عملية التسجيل وفي عملية تسجيل الدخول.
حتى الذهاب إلى آخر جهاز التوجيه هنا،
يوفر لنا البرنامج المساعد النمس طريقة تسمى التسجيل،
على مخطط المستخدم والنموذج.
لذلك سنقول تسجيل المستخدم وسيتم تحويل هذا إلى قول مستخدم جديد.
هذا المستخدم الجديد هو المعلمة الأولى التي يأخذ السجل
والمعلمة الثانية هي كلمة مرور الجسم req.
وبالتالي فإن كلمة المرور التي تأتي كمعلمة ثانية في نص الرسالة.
لذا تذكر أنه يتم تمرير اسم المستخدم وكلمة المرور
عند التسجيل في نص الرسالة.
الآن، في هذه الحالة،
سيؤدي ذلك إلى وظيفة إعادة الاتصال التي توفر الخطأ
والمستخدم كقيمتي رد الاتصال هنا ولسوء الحظ
، هذا لا يعمل في هذه الحالة.
لذلك سيكون لدي لقطع هذا من هنا ثم
بدلا من ذلك التعامل مع ذلك داخل هذا الأسلوب رد الاتصال هنا.
لذلك، اسمحوا لي فقط المسافة البادئة هذا،
بحيث يكون من الأسهل رؤية الرمز هنا.
لذلك سأقول، تسجيل المستخدم والمعلمة الأولى هي
مستخدم جديد تم إنشاؤه باستخدام
عرض اسم المستخدم هنا والمعلمة الثانية هي كلمة المرور،
ومن ثم الناتجة هي وظيفة رد الاتصال هذه التي سوف تتصل،
وسوف نقول مستخدم خطأ هنا.
في هذه الحالة، يجب علينا تحرير الشفرة قليلاً هنا.
لذا في الجزء الأول،
سنقول إذا كان الخطأ،
فسيتعين عليهم إرسال الرد بشكل صريح.
لذلك، أنا فقط ذاهب لنسخ هذين الاثنين هنا.
لذلك سنقول، إذا خطأ،
ثم رمز الحالة ريس،
سنقوم بتعيين هذا إلى 500 وتعيين نوع محتوى رأس وبعد ذلك،
سنقوم بتعيين ريس جسون ثم خطأ، خطأ.
لذلك سنقوم ببناء كائن json مع الخطأ
كقيمة لخاصية الخطأ هناك ثم إرسال هذا مرة أخرى.
إذن هذه هي الطريقة التي ستتعامل بها مع الخطأ في هذه الحالة.
خلاف ذلك، ما نفعله هنا هو أننا سوف
نقول جواز السفر مصادقة المحلية.
لذلك إذا كنا سنستخدم جواز السفر لمصادقة المستخدم مرة أخرى.
لذا سنقول أن جواز السفر مصدق محلي
للتأكد من أن تسجيل المستخدم كان ناجحا.
سنحاول مصادقة نفس المستخدم الذي قمنا بتسجيله للتو
وهنا سنقول req res وهذا
سيعود كقيمة ثالثة تعمل داخلها،
سنقوم بإرسال الرد إلى عميلنا.
لذا نحن سَنَقُولُ. اسمحوا لي أن إزالة هذا ومن ثم إضافته هنا.
يمكننا الآن إزالة هذا بعد ذلك،
لأن هذا ليس ضروريًا بالنسبة لنا وهذا هو إغلاق سجل المستخدم.
في الجزء الآخر،
ونحن سوف نفعل جواز سفر مصادقة المحلية.
انظر إلى بناء الجملة هنا.
لذلك هذا هو جواز السفر مصادقة المحلية ثم بعد ذلك،
علينا أن ندعو هذه الوظيفة هنا أن المعلمات req،
res وأن الثالث هو وظيفة رد الاتصال هنا.
لذلك هذه هي الطريقة التي يتم بها تنفيذ ذلك لأن جواز السفر يتوقع منك أن تفعل ذلك بهذه الطريقة.
في هنا، سنقوم بتعيين رمز الحالة req res هو 200،
وتعيين تطبيق محتوى رأس json ثم سنقوم
res تسجيل حالة json بنجاح ولن نقوم بتمرير قيمة المستخدم هنا.
بدلا من ذلك، ما سأفعله هو أنني
سأضع علم يسمى النجاح هنا إلى صحيح هنا.
الآن بهذه الطريقة، على جانب العميل عند تلقي هذا json،
يمكن للعميل ببساطة استخراج خاصية النجاح ثم التحقق لمعرفة ما إذا كان صحيحًا
أم لا للتحقق بسرعة مما إذا كان التسجيل ناجحًا أم لا.
إذن هذه هي الطريقة التي سنتعامل بها مع عملية تسجيل المستخدم هنا.
لذا لاحظ كيف تم تبسيط الشفرة بشكل كبير.
إذا لم يسجل المستخدم بشكل صحيح،
ثم هذا سوف يرسل مرة أخرى خطأ بشكل مناسب وأيضا سوف تفشل المصادقة.
لذلك في كلتا الحالتين، سوف التقاط الموقف عند فشل مصادقة المستخدم.
الآن، يتم تبسيط عملية تسجيل الدخول نفسها بشكل كبير.
لذلك، نحن لسنا بحاجة إلى القيام بكل هذا في مسار تسجيل الدخول هنا.
لذلك سأقوم بإزالة كل هذا الرمز ويصبح مسار تسجيل الدخول هذا مبسطًا هنا.
الآن لطريق تسجيل الدخول- لآخر جهاز التوجيه عندما نفعل ذلك
هنا، وهنا أيضا نتوقع إدراج اسم المستخدم وكلمة المرور
في نص رسالة البريد التي تأتي لها.
على عكس الحالة السابقة حيث كنا نقوم بتضمين هذا في رأس التفويض،
نتوقع هنا أن يتم تضمينها في نص رسالة البريد الواردة.
لذلك للمصادقة، سنقول ببساطة مصادقة جواز السفر وسنقول المحلية هنا.
لذا ستكون هذه هي المكالمة الثانية هنا.
لذا هذه هي الوسيطة الثانية هنا التي سنقوم بقطعها.
لذلك عندما يأتي آخر جهاز التوجيه على نقطة نهاية تسجيل الدخول،
سنقوم أولا استدعاء جواز السفر مصادقة المحلية.
إذا كان هذا ناجحًا، فسيأتي هذا
وسيتم تنفيذ الوظيفة التالية التالية.
إذا كان هناك أي خطأ في المصادقة،
فإن مصادقة جواز السفر هذه المحلية تلقائياً
إرسال رد إلى العميل حول فشل المصادقة.
لذلك يتم الاعتناء بها بالفعل.
لذا لاحظ كيف يتم تبسيط الشفرة في عملية تسجيل الدخول بشكل كبير.
لذلك، إذا كان هذا يمر بنجاح،
وأنا بحاجة فقط للتحقق من req و res وهنا ما سأفعله
هو أنني ببساطة إرسال رسالة إلى جانب العميل مع هذه المعلومات هنا.
سنقول رمز الحالة الدقة 200,
الدقة تعيين نوع محتوى رأس التطبيق json وريس json نجاح الحالة الحقيقية.
سنقول، لقد قمت بتسجيل الدخول بنجاح.
هذا كل شيء هذا هو التغيير الذي سنقوم به إلى ملف users.js.
لذلك لاحظ كيف، بسبب جواز سفر المستخدم،
كل من عملية التسجيل وعملية تسجيل الدخول،
وقد تبسيط رمز بشكل كبير في هذه الحالة.
الآن سوف ننتقل إلى تحديث ملف app.js الذهاب إلى app.js الآن.
في app.js الحق هنا
سوف ندخل جواز السفر.
بعد ذلك، سنقوم باستيراد
وحدة المصادقة التي قمنا بتطبيقها للتو.
سنقول var مصادقة وفي ملف app.js أسفل هنا بعد الجلسة،
نضيف app.use (passport.initialize)،
و app.use (.session).
إذا تم تسجيل دخول المستخدم،
ثم ما يحدث هو أنه عند بدء الجلسة مرة أخرى،
تذكر أنه عند تسجيل الدخول هنا،
سيتم تسجيل الدخول هنا،
والدعوة إلى جواز السفر مصادقة المحلية،
عندما يتم ذلك في مرحلة تسجيل الدخول،
جواز السفر مصادقة المحلية سوف
تلقائياً إضافة خاصية المستخدم إلى رسالة الطلب.
لذلك، فإنه
سيتم إضافة req.user وبعد ذلك، جلسة جواز السفر التي قمنا بها هنا تلقائيا
تسلسل معلومات المستخدم ومن ثم تخزينها في الجلسة.
لذا، وبعد ذلك، كلما
جاء طلب وارد من جانب العميل
مع ملف تعريف ارتباط الجلسة بالفعل،
فسيتم تحميل req.user تلقائيًا على الطلب الوارد.
لذا، هذه هي الطريقة التي يتم بها تنظيم جلسة جواز السفر نفسها.
لذلك، بمجرد الانتهاء من ذلك،
حتى رمز المصادقة لدينا سوف تصبح أكثر بساطة هنا.
لذلك، في رمز المصادقة،
وسوف نقول ببساطة، إذا req.user.
لذلك، سيتم تحميل req.user في من خلال الوسيطة جلسة جواز السفر تلقائيا،
ولذا فإننا سوف نقول req.user.
إذا لم يكن req.user سنقول var err، خطأ جديد،
لم يتم مصادقتك، وجميع هذه الرسائل هنا.
خلاف ذلك، انظر الجزء الآخر أيضا يتم تبسيطه الآن.
نحن سَنَقُولُ آخر التالي.
لذا، يصبح رمز المصادقة الخاص بك أكثر بساطة لأنه إذا لم يكن req.user موجودًا،
فهذا يعني أن المصادقة لم تتم بشكل صحيح،
ولهذا السبب تشير إلى الخطأ.
خلاف ذلك، يتم مصادقتك.
إذا كان req.user موجودًا،
فهذا يعني أن جواز السفر قد قام بالمصادقة
ويتم تحميل مستخدم req.user على رسالة الطلب،
وهكذا يمكنك الذهاب إلى أبعد من ذلك.
لذلك، هذا هو التغيير الذي نحتاج إلى القيام به إلى app.js.
دعونا حفظ جميع التغييرات ومن ثم ننظر إلى التطبيق في ساعي البريد.
بمجرد حفظ كافة التغييرات، قم بإعادة تشغيل الخادم الخاص بك.
إذا كان الملقم قيد التشغيل،
إيقاف ثم قم بإعادة تشغيل الملقم.
اسمحوا لي أن أبدأ الخادم الخاص بي.
بمجرد تشغيل الخادم وتشغيله،
دعنا نذهب إلى ساعي البريد ونقوم ببعض الطلبات.
الذهاب إلى ساعي البريد، اسمحوا لي الآن محاولة لتسجيل مستخدم جديد
عن طريق القيام وظيفة على المستخدمين تسجيل نقطة النهاية.
عندما يتم نشر التسجيل،
ترى أنه في نص رسالة الرد تقول،
النجاح الحقيقي، وتسجيل الحالة بنجاح.
لذلك، تم تسجيل المستخدم بنجاح على جانب العميل.
لذلك، الآن، اسمحوا لي أن تفعل تسجيل الدخول للمستخدم.
لذلك، سنقول، «تسجيل الدخول»، ولا تزال توفر
اسم المستخدم وكلمة المرور في نص الرسالة هنا.
لذلك، عندما أنقر على «إرسال»،
ستلاحظ على الفور أنه في الجزء السفلي
، يقول، النجاح، صحيح، والحالة،
يتم تسجيل الدخول ثم في الرأس نفسه،
سترى ملف تعريف الارتباط مجموعة قادمة لأننا نقوم بإعداد الجلسة،
ومن ثم ترى ملف تعريف الارتباط في مكان هناك.
عند النقر على ملفات تعريف الارتباط،
سترى معرف الجلسة في مكانه هناك.
لذلك، الآن نحن تسجيل الدخول بنجاح.
دعونا نرسل طلبًا إلى نقطة النهاية Get localhost: 3000 أطباق.
ترى أن طلبك ذهب بنجاح ومن ثم تم إرسال رد.
بالطبع، في هذه اللحظة،
قاعدة البيانات الخاصة بي فارغة ولهذا السبب ترسل مصفوفة فارغة
من موقع الخادم عندما أسأل عن المضيف المحلي: 3000/أطباق.
هذا جيد تماما
اسمحوا لي الآن تسجيل الخروج من المستخدم.
لذلك، عندما أقوم بتسجيل الخروج من المستخدم، الآن،
ستلاحظ أن المستخدم قد تم تسجيل الخروج وعند النقر على ملفات تعريف الارتباط،
ستلاحظ أن، أن ملف تعريف الارتباط الخاص بـ localhost قد ذهب بالفعل.
لذا، الآن، إذا حاولت أن تفعل الحصول على المضيف المحلي: أطباق،
ترى أن الرد يقول،
لم يتم مصادقتك.
دعونا تسجيل الدخول مرة أخرى عن طريق القيام وظيفة على تسجيل دخول المستخدمين،
وبعد ذلك، ترى أنه يمكننا تسجيل الدخول بنجاح في هذه المرحلة.
كما تلاحظ أنه
تم إعداد ملف تعريف الارتباط الجديد هنا.
ثم، إذا فعلنا الحصول على المضيف المحلي: أطباق هنا،
الآن، وهذا سيكون ناجحا.
نظرًا لأننا نستخدم النمس المحلي لجواز السفر كمكون إضافي للنمس،
دعنا نذهب أيضًا ونتحقق من خادم MongoDB الخاص بنا لمعرفة كيف
يتم تخزين معلومات المستخدم فعليًا في MongoDB.
لذلك، في المحطة الطرفية الخاصة بك،
يمكنك فتح تموج Mongo،
لذلك دعنا نقول Mongo في المحطة ومن ثم الاتصال بخادم MongoDB الخاص بنا،
ثم نقول استخدام الارتباك.
ثم سنقول db.users.find () .prety () ثم طباعة معلومات المستخدم.
لذلك، عند طباعة معلومات المستخدم كما ترى هنا،
هناك مستخدم واحد قمنا بتسجيله في وقت سابق.
لذا، سترى أن سجل المستخدم يحتوي على معرف الكائن ثم
اسم المستخدم أسفل هنا،
وعلامة المشرف التي هي خاطئة ثم،
لاحظ أيضًا أنه بدلاً من تخزين كلمة المرور نفسها ما
يفعله المكون الإضافي Mongos Passport المحلي للنمس هو أنه يخزن
قيمة الملح هنا وقيمة التجزئة هنا.
الآن، ما يفعله المكون الإضافي لـ Mongo هو أنه سيستخدم الملح كوسيلة
لتشفير كلمة المرور وتثبيت كلمة المرور المجزأة في حقل التجزئة هذا هنا.
لذلك، عند محاولة تسجيل الدخول،
سيتم تطبيق نفس التحويل إلى كلمة المرور الواردة،
ثم حاول مطابقتها مع قيمة التجزئة هذه المخزنة هنا.
لذلك، يمكنك أن ترى أنه في قاعدة البيانات نفسها،
لا يتم تخزين كلمة المرور مباشرة داخل
القيمة المجزأة لكلمة المرور التي يتم تجزئتها باستخدام مفتاح الملح هذا هنا، الذي
نراه هنا،
يتم تخزينها في السجل هناك.
لذا، هذه هي الطريقة التي تمكننا بها المكون الإضافي Mongoose المحلي
من تخزين معلومات المستخدم داخل قاعدة البيانات الخاصة بنا.
مع هذا الفهم السريع لكيفية
مساعدة جواز السفر، وجواز السفر المحلي، وجواز السفر المحلي-النمس لتبسيط
الاستراتيجية المحلية لاسم المستخدم وكلمة المرور في تطبيقنا.
و نحن نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع جواز سفر الرسالة.