في الدروس السابقة،
رأينا استراتيجيات مختلفة لمصادقة المستخدم.
بدأنا بالمصادقة الأساسية،
ثم انتقلنا إلى ملفات تعريف الارتباط والجلسات السريعة
كوسيلة لمصادقة وتعقب المستخدمين.
في هذا الدرس سوف ننظر إلى Passport،
وحدة العقدة التي تجعل المصادقة سهلة جدا
وغير مزعجة ومباشرة لتكوين في التطبيق الخاص بك.
Passport ليس سوى برنامج وسيط مصادقة يدعم
العديد من الاستراتيجيات التي يمكن استخدامها لمصادقة المستخدم،
بما في ذلك استراتيجية محلية مثل استخدام اسم المستخدم وكلمة المرور،
أو حتى مصادقة طرف ثالث أو استخدام OAuth أو OAuth 2.0،
مثل استخدام Facebook أو Twitter أو
أو +Google، وما إلى ذلك.
سننظر في بعض التفاصيل حول Passport،
المصادقة المحلية المدعومة Passport.
وفي التمرين التالي،
سنقوم بتحديث طلبنا للاستفادة من
وحدات الجوازات والعقدة المحلية لتمكين.
المصادقة المحلية باستخدام اسم المستخدم وكلمة المرور.
لذلك، كما ذكرت قليلا في وقت سابق،
Passport هو الوسيطة المصادقة مفيدة جدا لتطبيقات Node.js.
فإنه يجعل من الأسهل لتنفيذ المصادقة.
كما رأينا في التدريبات السابقة،
تنطوي المصادقة على الكثير من التعليمات البرمجية المتكررة والمهام المتكررة التعامل مع الأخطاء
ووضع طرق للتحقق من
مصادقة المستخدم ومن ثم مصادقة المستخدم وهلم جرا.
يتم تبسيط كل هذا داخل Passport باستخدام
استراتيجيات مختلفة يمكن استخدامها لمصادقة المستخدمين.
يمكنك استخدام استراتيجية محلية على سبيل المثال تقوم على
تسجيل المستخدمين في النظام الخاص بك باستخدام اسم المستخدم وكلمة المرور،
ثم المصادقة بعد ذلك باستخدام اسم المستخدم وكلمة المرور.
يدعم Passport أيضًا المصادقة المستندة إلى OpenID
أو المصادقة المستندة إلى OAuth أو OAuth 2.0،
كما يدعمها مصدقون من جهات خارجية مثل Facebook و
Twitter و Google+ وما إلى ذلك.
يمكننا أيضًا استخدام ما يسمى
برموز ويب JSON كطريقة أخرى للمصادقة تسمى المصادقة المستندة إلى الرمز المميز.
سنلقي نظرة على المصادقة المستندة إلى الرمز المميز في الجزء الأخير من هذا الدرس.
أيضا، Passport يدعم الجلسات.
وكما رأينا في التمرين السابق والدرس السابق، فإن
الجلسات السريعة هي طريقة سهلة لتتبع المستخدمين
على جانب الخادم والقدرة على خدمة الطلبات الواردة من العملاء.
للاستفادة من Passport، بالطبع،
سنقوم بتثبيت وحدة Passport.
سنقوم أيضا، في التمرين التالي،
بتثبيت وحدة Passport-Local
لتوفير الاستراتيجية المحلية لمصادقة المستخدم.
استخدام جواز السفر في طلبنا هو مستقيم إلى حد ما إلى الأمام.
على المسارات التي نريد إجراء المصادقة عليها،
نقوم فقط بتحديد مصادقة جواز السفر ثم تحديد
استراتيجية المصادقة المحددة التي نريد استخدامها لمصادقة المستخدم.
وكمثال هنا،
ترى أننا
نطبق مصادقة محلية عن طريق القول مصادقة جواز السفر والمحلية.
وهكذا فإنه يستخدم الاستراتيجية المحلية لمصادقة المستخدمين.
إذا كانت المصادقة ناجحة،
ثم ينتقل الوسيطة إلى الخطوة التالية،
حيث يمكننا زيادة معالجة الطلب الوارد.
لذلك، عند الانتهاء من المصادقة الناجحة لجواز سفر المستخدم،
يضيف Passport نفسه خاصية المستخدم إلى رسالة الطلب.
لذلك يصبح req.user متاحًا لنا مع معلومات المستخدم هناك،
والتي يمكننا استخدامها لاحقًا داخل
تطبيقنا السريع للتعامل مع الطلب الوارد من مستخدمين محددين.
لذلك هذا يساعدنا بسهولة على تحديد العميل الذي أرسل الطلب إلى
طلبنا وبالتالي خدمة
الطلب وفقًا لذلك بناءً على هوية المستخدم.
جنبا إلى جنب مع Passport، سنقوم بتثبيت
وحدة أخرى ذات صلة بجواز السفر تسمى Passport-
يدعم Passport-Local استراتيجية تسمى
الاستراتيجية المحلية لمصادقة المستخدمين
باستخدام تركيبة كلمة مرور اسم المستخدم القياسية.
لذلك قمنا بإعداد مخطط المستخدم،
كما فعلنا من قبل،
ثم استخدام مخطط المستخدم أو النموذج لتتبع اسم المستخدم
وكلمة المرور ثم Passport-Local يعتمد على ذلك للتحقق من اسم المستخدم وكلمة المرور.
لذلك، لتثبيته مرة أخرى،
كونها وحدة عقدة،
نقوم بتثبيته باستخدام الإجراء القياسي لتثبيت وحدة عقدة Passport-Local Node.
بمجرد تثبيت وحدة Node Passport-Local
، نحتاج إلى تحديد الاستراتيجية المحلية وكيفية استخدامها بالفعل داخل Passport.
لذلك، لتحديد استراتيجية محلية، سنقول؛
passport.use، وبالتالي هذا سوف يسمح لنا لتحديد الاستراتيجية المحلية لاستخدامها.
لذلك، بعد تثبيت Passport-Local،
سنعلن عن استراتيجية محلية جديدة ثم
نوفر وظيفة التحقق المقابلة التي يتم استخدامها للتحقق من المستخدم.
إذا كنت تستخدم MongoDB كمتجر خلفي، فعندئذ،
لمساعدتنا في استراتيجية Passport-Local،
هناك وحدة أخرى تسمى Passport-Local Mongoose.
توفر وحدة Passport-Local
Mongoose المكون الإضافي الذي سيبسط تسجيل الدخول إلى اسم المستخدم وكلمة المرور.
عن طريق تثبيت المكون الإضافي Passport-Local Mongoose
ثم استخدامه عندما نحدد مخطط المستخدم
والنموذج، وبالتالي باستخدام دعم وحدة Passport-Local
Mongoose، يضيف هذا المكون الإضافي للنمس في اسم المستخدم
وطريقة مشفرة لتخزين كلمة المرور داخل مستخدمنا نموذج.
يتم التشفير باستخدام التجزئة
على كلمة المرور التي نستخدمها لتسجيل المستخدمين،
ويستخدم التجزئة نفسها حقل الملح.
حتى إذا كنت تعرف أي شيء عن التشفير،
في التشفير، والملح هو سلسلة عشوائية التي يتم استخدامها لتنفيذ
عملية التجزئة على كلمة المرور للتخزين.
لذلك يتم تخزين كلمة المرور المجزأة نفسها بالفعل في قاعدة بيانات MongoDB الخاصة بنا.
لا يتم تخزين كلمة المرور الفعلية.
لذلك، عندما يحاول المستخدم المصادقة باستخدام اسم المستخدم وكلمة المرور،
سيتم تجزئة كلمة المرور مرة أخرى ثم مقارنتها مع
كلمات المرور المجزأة المخزنة في قاعدة البيانات الخاصة بنا وهذا
كله يتم توفيره من قبل البرنامج المساعد Mongoose، Passport-Local Mongoose.
بالإضافة إلى ذلك، يضيف Mongoose Passport-Local أيضًا أساليب إضافية
مفيدة جدًا لتكوين استراتيجية Passport-Local.
لذلك داخل تطبيقنا عندما نحدد مخطط المستخدم والنموذج،
سنقوم باستيراد Passport-Local Mongoose ثم نضيف
كمكون إضافي لمخطط المستخدم.
تضيف وحدة Passport-Local Mongoose هذه تلقائيًا كما قلت حقل اسم المستخدم وكذلك
حقل تخزين كلمة المرور المجزأة باستخدام قيمة الملح التي تستخدمها للقيام بالتجزئة،
وتوفر أيضًا طرقًا إضافية
تمكننا من تكوين استراتيجية Passport-Local الخاصة بنا.
إذا كنا نستخدم وحدة Passport-Local Mongoose،
فإن الاستراتيجية المحلية،
يدعم المكون الإضافي Passport-Local Mongoose على
نموذج المستخدم طريقة مصادقة ستقوم تلقائيًا بالمصادقة.
في الشريحة السابقة كنت قد أظهرت لكم كيف يمكننا تنفيذ الاستراتيجية المحلية.
الآن يتم توفير هذا تلقائيا لك من قبل Passport-Local Mongoose
ببساطة عن طريق قول جديد localstrategy user.
ثم لا نحتاج إلى كتابة رمز المصادقة بشكل صريح للاستراتيجية المحلية.
أيضا إذا كنت تستخدم جلسات معتمدة من قبل Passport
، ثم، لجلسات الدعم،
يجب إجراء تسلسل معلومات المستخدم
ليتم تخزينها مع معلومات الجلسة على جانب الخادم، وبعد ذلك،
عندما يأتي الطلب،
من معرف الجلسة،
معلومات المستخدم يحتاج إلى إلغاء تسلسلها لاستخراج
معلومات المستخدم من معلومات جلسة العمل التي يتم تخزينها على جانب الخادم.
الآن
يتم دعم عملية التسلسل وإلغاء التسلسل هذه بالفعل بواسطة Passport-Local Mongoose من خلال
المستخدم التسلسلي
وطرق المستخدم إلغاء التسلسل المتوفرة من المكون الإضافي Passport-Local Mongoose.
لذلك بعد أن رأينا هذا،
سنرى الآن في التمرين مدى سهولة تكوين
الاستراتيجية المحلية لمصادقة المستخدمين باستخدام
وحدات Passport و Passport-Local و Passport-Local Mongoose Node.