هذا هو الجزء الثاني من تمارين الدورات السريعة.
لقد أكملنا الجزء الأول في وقت سابق،
حيث أضفنا الدعم لجلسات
Express، واستخدام جلسات Express كوسيلة لتتبع المستخدمين على جانب الخادم،
والتعرف على الطلبات الواردة من المستخدمين.
في هذا التمرين، لا نركز كثيرًا على الجلسات السريعة نفسها،
ولكننا سننظر في طريقة لتوسيع خادم REST API السريع لدعم
نموذج جديد لتسجيل المستخدمين ومصادقتهم.
لذلك، سوف نقدم نموذج مستخدم جديد ومخطط في تطبيقنا.
لدينا بالفعل مسار مستخدمي الخط المائل الذي
قام المولد السريع بالفعل بتركيب جهاز توجيه المستخدم.
لذلك، نحن ذاهبون للاستفادة من ذلك ومن ثم تحديث ذلك
لدعم تسجيل المستخدمين الجدد،
مصادقة مستخدم موجود،
وأيضا تسجيل خروج مستخدم من موقع الخادم لدينا.
لذا، سننظر إلى جلسات Express كوسيلة لتتبع المستخدمين بمجرد تسجيل دخول المستخدم،
ثم عندما يقوم المستخدم بتسجيل الخروج،
سيتم إزالة الجلسة من النظام.
إذن، كيف يمكننا القيام بهذا التمديد في هذا التمرين؟
دعنا نذهب ونكتشف ذلك
استمرارًا في خادم REST API السريع،
دعنا نذهب الآن إلى النماذج ونضيف ملفًا جديدًا باسم user.js.
هذا هو الملف حيث سنقوم بإنشاء مخطط المستخدم والنموذج.
سنقوم بإنشاء مخطط مستخدم بسيط يتتبع اسم المستخدم وكلمة المرور،
وأيضًا علامة تم تعيينها للإشارة إلى
ما إذا كان المستخدم مسؤولاً أو مستخدمًا عاديًا.
لذا، هذه طريقة واحدة للتمييز بين أنواع المستخدمين المختلفة.
لذلك، في هذا الملف،
دعونا أولا تتطلب Mongoose لأننا إنشاء مخطط Mongoose،
وبعد ذلك سنقوم بإنشاء مخطط يسمى مخطط Mongoose،
وبعد ذلك سنقول مستخدم var.
لذلك هذا هو مخطط المستخدم الذي سنقوم بإنشائه،
وسنقول مخطط مستخدم جديد.
سيتم تعريف مخطط المستخدم كما ذكرت للتو،
مع ثلاثة حقول هنا تسمى اسم المستخدم
الذي من الواضح أنه من سلسلة النوع،
وهذا حقل مطلوب،
وهذا حقل فريد.
أنت لا تريد اثنين من المستخدمين مع نفس اسم المستخدم في النظام الخاص بك،
لذلك نحن إنشاء اسم المستخدم ثم الحقل الثاني هو حقل كلمة المرور.
الآن، بالطبع، يمكنك توسيع
مخطط المستخدم هذا للسماح للمستخدم بتتبع ملفه الشخصي بالكامل،
لكننا سنفعل ذلك في أحد التمارين اللاحقة، في الوقت الحالي،
يتم التعرف على المستخدم داخل النظام ببساطة عن طريق اسم المستخدم وكلمة المرور.
لذا، فإن كلمة المرور هي من سلسلة النوع ثم مطلوبة.
يسمى الحقل الثالث الذي سأستخدمه المشرف.
وبالتالي فإن المشرف هو من نوع Boolean،
وسنقول خطأ الافتراضي.
لذلك، افتراضيا عند إنشاء مستخدم، يتم إنشاء
مستخدم جديد،
سيتم تعيين علامة المشرف إلى false.
يمكنك تعيينه بشكل صريح إلى true من داخل
التعليمات البرمجية الخاصة بك لوضع علامة على مستخدم كمستخدم إداري.
ربما يمكنك توفير امتيازات إضافية لمستخدم إداري،
أو ربما السماح لمستخدم المسؤول بتنفيذ
عمليات معينة لا يقوم المستخدمون العاديون بذلك.
وسوف ننظر في ذلك في واحدة من التدريبات اللاحقة
، في الوقت الحالي، وهذا هو مخطط المستخدم الذي أنشأنا،
دعونا إنشاء وحدة من هذا وتصدير من
هذه الوحدة نموذج النمس للمستخدم اسم.
لذا، هذا هو نموذج Mongoose والمخطط هو
مخطط المستخدم الذي حددناه قليلاً في وقت سابق.
لذا، هذه هي الطريقة التي نحدد بها مخطط المستخدم الخاص بنا.
لذا، الآن بعد أن قمنا بتعريف مخطط المستخدم لدينا،
دعنا نذهب إلى جهاز التوجيه الذي تم إعداده بالفعل
بواسطة مولد صريح عند إنشاء هذا التطبيق السريع.
لذلك، إذا ذهبت إلى مجلد المسارات،
سترى هذا الملف يسمى users.js.
لذلك، سيتم تمديد هذا الملف users.js لإنشاء جهاز التوجيه.
لذلك، هناك ما سأقوم به هو استيراد محلل الجسم،
ومن ثم سيعلنون عن جهاز التوجيه السريع،
وبعد ذلك سنقول أيضا استيراد
مخطط المستخدم
ونموذج من نماذج المستخدم،
ثم لجهاز التوجيه السريع سنقول،
جهاز التوجيه استخدام محلل الجسم.
لذلك، الآن بعد أن أعلنا محلل الجسم هناك،
ونحن في طريقنا إلى ترك هذا الجزء
على هذا النحو، في وقت لاحق سنقوم بتعديل هذا للسماح
للمسؤول لتكون قادرة على استرداد
جميع المستخدمين المسجلين في النظام ولكن في الوقت الراهن،
ونحن في طريقنا إلى ترك هذا الطريق على هذا النحو.
سنضيف في عدد قليل من الطرق هنا،
لذلك سنقول، «راوتر بوست».
لذلك سوف ندعم عملية النشر على مسار يسمى الاشتراك وكما تتوقع،
سيسمح مسار الاشتراك هذا للمستخدم بالتسجيل على النظام،
لذلك سيدعم تسجيل المستخدم.
لذا، نحن سَنَقُولُ، «rec، res، التالي.»
وبالتالي فإن هذا سيكون تسجيل مشاركة جهاز التوجيه،
لن يسمح بالطرق المتبقية في جزء نهاية الاشتراك.
لذا، للوصول إلى هذا،
نظرًا لأن جهاز التوجيه هذا هو الذي تم تركيبه على مستخدمي
الخط المائل، فإننا نحدد نقطة النهاية
هذه كشرطة مائلة للمستخدمين الاشتراك، وهذه هي نقطة النهاية التي سيتم استخدامها لتسجيل المستخدمين الجدد داخل النظام.
لذا، فإن أول شيء سنقوم به هو استخدام
طريقة المستخدم والتوقع هو أنه لكي يقوم المستخدم بالتسجيل،
سيتم توفير اسم المستخدم وكلمة المرور كسلسلة JSON
داخل نص طلب المشاركة الوارد.
لذلك، من الجسم،
لأن الجسم قد تم تحليله بالفعل من قبل محلل الجسم،
لذلك من الجسم،
وسوف تحقق أولا للتأكد من أن
المستخدم مع اسم المستخدم هذا غير موجود داخل النظام.
إذا كان المستخدم مع اسم المستخدم هذا موجودًا،
فأنت تحاول تسجيل مستخدم مكرر
ولا ينبغي السماح به في النظام.
لذلك، سوف نقول، «المستخدمين العثور على واحد»، وبعد ذلك سنحاول العثور على ما إذا كان
هناك مستخدم واحد مع اسم المستخدم الذي تم
اختياره من قبل العميل الذي يحاول تسجيل مستخدم جديد.
إذا كان المستخدم موجودًا بالفعل،
فمن الواضح أنك لن تسمح للمستخدم الجديد بالتسجيل باستخدام نفس اسم المستخدم.
لذلك، سوف نقول، «ثم المستخدم.»
لذلك، سيؤدي ذلك إلى إرجاع المستخدم هنا وداخل حقل المستخدم هذا،
ثم سنقوم بالتحقق من حقيقة ما إذا كان المستخدم موجودًا بالفعل،
ثم اسمحوا لي بالقبض على الخطأ هنا.
لذلك سوف نقول، «خطأ في الصيد»، ثم، «الخطأ التالي».
لذلك، سنقوم فقط بتمرير ذلك إلى معالج الخطأ هناك.
لذلك، إذا كان هذا البحث عن المستخدم بإرجاع حقل المستخدم،
إذا كان المستخدم لا يساوي فارغة.
لذلك، إذا كان المستخدم الذي يتم إرجاعه من قبل هذا البحث
ليس فارغًا، فهذا يعني أن المستخدم مع اسم المستخدم المعطى موجود بالفعل،
لذلك يجب ألا تسمح باشتراك مكرر.
لذلك سنقول، «فار يخطئ خطأ جديد».
وسنقول، «تغيير المستخدم. اسم المستخدم.»
موجود بالفعل لذلك في الأساس،
أنت تمنع مستخدم مكرر من الاشتراك ثم سنقول
err.status 403 مقابل المحرمة ثم الخروج،
استدعاء معالج الخطأ، الخطأ التالي.
آخر، هذا يعني أن المستخدم غير موجود
لذا يجب أن تسمح للمستخدم بتسجيل الخروج.
لذلك، في الجزء الآخر،
سوف نقول، عودة user.create ().
سنقوم بإنشاء مستخدم جديد مع تعيين اسم المستخدم إلى req.body.username،
ثم اسمحوا لي أن أضع هذا في السطر التالي بحيث يكون أكثر وضوحًا لك،
وسنقول كلمة المرور: req.body.password.
الآن، نحن نعلم بالفعل أن علامة المشرف بشكل افتراضي سيتم تعيينها إلى false،
لذلك نحن ذاهبون إلى ترك الأمر على
هذا النحو، وهذا سيسمح للمستخدم الجديد أن يتم التوقيع وعندما يتم تسجيل المستخدم الجديد،
وهذا سيعود وعد وداخل «ثم» سوف نتعامل مع هذا الوعد هنا.
لذلك، هذا سيعيد الوعد من
هذا «ثم» وبعد ذلك سنتعامل معه في «ثم» المقبل هنا.
سنقول بعد ذلك، Res.statusCode هو 200،
Res.Setheader وسنقول تطبيق/json من نوع المحتوى
وسنقول، res.json (الحالة: تسجيل ناجح)
، وإذا كنت تريد،
يمكننا تحميل المستخدم في
رسالة الرد هذه هنا كخاصية في json.
سوف يقول التسجيل بنجاح.
ثم إذا كان هناك خطأ في
هذه العملية سوف يقول «الخطأ التالي».
لذلك سوف التعامل مع الخطأ.
إذا لم يتم حل الوعد بنجاح،
فسيتم التعامل معه من خلال ذلك. إذن هذا كل شيء
حتى هنا، لدينا طريقة للمستخدم للاشتراك.
لذلك، لكي يقوم المستخدم بالتسجيل،
سيقوم المستخدم بعمل مشاركة على/users/signup وفي نص الرسالة،
سيتضمن العميل سلسلة json
مع خصائص اسم المستخدم وكلمة المرور في سلسلة json هذه.
هذه هي الطريقة التي قمت بالتسجيل لمستخدم جديد.
الآن، دعونا نرى كيف سنقوم بتسجيل الدخول للمستخدم.
الآن، سوف نستمر في استخدام جلسات Express التي قمنا بها في وقت سابق لتتبع المستخدم.
لذلك، لتسجيل المستخدم سوف يقول «router.post» على نقطة النهاية/تسجيل الدخول.
حتى على نقطة النهاية/تسجيل الدخول،
وسوف نفعل router.post.
ونحن من الواضح بدلا من قول وظيفة،
يمكنك استخدام وظيفة السهم هنا لrouter.post،
وأنا ذاهب للقيام بنفس الشيء هنا.
لقد حصلت مولعا وظائف الأسهم.
لذلك، سنقوم بعمل وظيفة السهم هنا.
لذلك لتسجيل الدخول، كيف يستمر تسجيل الدخول؟
لذلك لتسجيل الدخول،
ما سنفعله هو أننا سوف نذهب إلى ملف app.js ثم داخل هذا المصادقة،
كنا نفعل ذلك الاشتراك للمستخدم هناك.
لذا، ما سأفعله هو أنني سأقوم بنسخ
هذا الأمر كله لأنني لن أفعل كل هذا على أية حال.
لذلك، بدلا من ذلك اسمحوا لي أن نسخ على طول الطريق من هذه النقطة فصاعدا حتى req.session.user.
لذلك، إذا كان جزء من req.session.user أنا ذاهب إلى نسخ،
ومن ثم القادمة إلى users.js وتسجيل الدخول.
هذا هو بالضبط كيف سأقوم بالمصادقة.
لذلك سنقول إذا لم يكن req.session.user.
وهذا يعني أن المستخدم لم يصادق نفسه بعد.
ثم تتوقع المصادقة الأساسية
كآلية للمستخدم لاستخدام للمصادقة.
لذلك سنقول فار AuthHeader إذا! AuthHeader ثم سنقوم برفع الخطأ،
وإلا فإننا سوف استرداد اسم المستخدم وكلمة المرور من الرأس.
الآن، هنا كنا نفعل إذا كان اسم المستخدم يساوي المشرف وكلمة المرور تساوي كلمة المرور.
ولكن الآن، ما سنقوم به هو أننا ذاهبون للبحث في
قاعدة البيانات لمعرفة ما إذا كان هذا المستخدم معين موجود.
لذلك، بدلا من القيام بذلك هنا،
بدلا من القيام بذلك إذا اسم المستخدم وكلمة المرور،
وسوف نقول، user.Findone
وسنقول اسم المستخدم هو اسم المستخدم.
لذلك هذه الخاصية تساوي اسم المستخدم هذا الذي قمنا باسترداده للتو
وبعد ذلك سنقول ثم المستخدم.
حتى داخل هذا «ثم».
لذلك أنا ذاهب لنقل هذا الرمز داخل هذا «ثم» لأن
الآن ما أنا ذاهب للتحقق من ذلك هو الآن بعد أن كنت قد استردت المستخدم،
وأنا بحاجة للتحقق للتأكد من أن هذا المستخدم هو بالضبط ما أبحث.
لذا في هذه المرحلة،
سنقوم أولاً بالتحقق للتأكد من أن المستخدم ليس خاليًا.
لذلك سنقول إذا كان المستخدم فارغًا.
لذلك، إذا كان المستخدم فارغًا،
فهذا يعني أننا لم نتمكن من العثور على مستخدم له اسم المستخدم المحدد هذا.
لذلك، سيكون لديك لإرجاع خطأ هنا.
لذلك اسمحوا لي فقط نسخ هذا الجزء ثم لصقه
هنا وبعد ذلك سنعود قائلا فار خطأ جديد
وسنقول اسم
المستخدم مساحة المستخدم
غير موجود.
حتى في هذه الحالة،
هذا المستخدم غير موجود لذلك أنا ذاهب فقط لإزالة هذا الجزء ومن
ثم حالة الخطأ المقابلة ستكون 403 هنا.
لذلك هذا هو الجزء الأول.
إذا كان المستخدم فارغًا، فمن الواضح أننا سنخبر أن المستخدم غير موجود.
الجزء الثاني نحن ذاهبون للتحقق هو آخر إذا كلمة مرور المستخدم.
مما يعني أن المستخدم موجود في هذه المرحلة.
لذا، فإن الاختيار الثاني الذي سنفعله هو أن كلمة مرور المستخدم لا
تساوي كلمة المرور بعد ذلك.
نحن بحاجة مرة أخرى إلى الإشارة إلى الخطأ هناك.
لذلك فإن الخطأ يقول،
في هذه الحالة، سنقول
«كلمة المرور الخاصة بك غير صحيحة».
لذلك هذا هو الجزء الثاني هنا.
لذلك كلمة المرور الخاصة بك غير صحيحة ثم الجزء الأخير.
سنقول «آخر».
لذلك اسمحوا لي أن المسافة البادئة هذا الرمز.
لذلك إذا كان
user.user.username هو اسم المستخدم الذي يجب أن يكون صحيحًا في هذه الحالة
ثم الجزء الثاني،
user.password يساوي كلمة المرور التي من الواضح أيضًا أنها يجب أن تكون صحيحة في هذه المرحلة.
ولكن على أي حال،
أنا ذاهب للتحقق من هذه المسألة هنا وهذا آخر لن يحدث على الإطلاق في هذه الحالة.
لذلك، بحلول الوقت الذي تصل فيه إلى هذه النقطة،
يجب أن يكون اسم المستخدم
هو نفسه اسم المستخدم وكلمة المرور يجب أن تكون هي نفسها كلمة المرور،
ولكن في أي حال أضع في الاختيار المزدوج عند هذه النقطة فقط للتأكد بشكل مضاعف.
ثم في هذه الحالة،
ثم سنقول تمت مصادقة req.session.user.
لذلك، سنقوم بتعيين هذا إلى مصادقة
وأيضا هذا واحد، وسوف نقول
res.StatusCode هو 200.
لذلك تمكنا بنجاح من مصادقة المستخدم.
لذا، سنقول Res.statusCode هو 200 ثم سنقول Res.Setheader
نوع المحتوى عادي و
res.end سنقوم ببساطة بإرسال رسالة تقول «أنت مصادق».
هذا كل شيء لذلك، وهذا يغطي الجزء ثم من المستخدم فيندون.
لذا أولاً، نتحقق من أنه إذا كان المستخدم فارغًا،
فهذا يعني أننا لم نتمكن من العثور على المستخدم،
لذلك من الواضح أننا نعيد خطأ يقول أن اسم المستخدم غير موجود.
إذا كانت كلمة مرور المستخدم لا تتطابق مع كلمة المرور،
لذلك في هذه المرحلة،
المستخدم موجود ولكن كلمة المرور لم تتطابق، لذلك سنقول،
«كلمة المرور الخاصة بك غير صحيحة»، وبعد ذلك، أخيرا،
نصل إلى هذه النقطة ثم اسم المستخدم وكلمة المرور يجب أن يتم تحديد بشكل صحيح.
على الرغم من أنني لست بحاجة إلى هذا الاختيار ولكن أنا فقط وضعت هناك في مكان وبعد ذلك في هذه المرحلة،
وسوف تعيين req.session.user لمصادقة
عليه ثم تعيين رمز الحالة إلى 200 مما يعني أنك
تمكنت بنجاح من مصادقة المستخدم ومن ثم يمكنك الانتهاء عند هذه النقطة.
لأن هذا هو ثم،
وسوف أضع في الصيد في هذه المرحلة،
لذلك سنقول خطأ الصيد وإذا حدث الخطأ،
ثم أنا ببساطة تمرير الخطأ
إلى التالي
بحيث معالج الخطأ سوف تكون قادرة على التعامل مع الخطأ بشكل مناسب.
بحيث ينتهي قبالة هذا المستخدم فيندون.
الآن، هذا هو الحال عندما لم يتم تعيين req.session.user.
إذا تم تعيين ذلك بالفعل،
فهذا يعني أن المستخدم قد قام بتسجيل الدخول بالفعل.
حتى في هذه الحالة،
الجزء الآخر هنا يتعامل مع الوضع قائلا أننا سنقوم بتعيين
StatusCode إلى 200
ونوع المحتوى إلى نص/عادي وبعد ذلك سنقول،
«أنت مصادق بالفعل».
لذا، إذا وصلت إلى هذا الجزء الآخر،
فستأتي إلى هنا لأن req.session.user ليس فارغًا بالفعل،
مما يعني أن المستخدم قد تمت مصادقته بالفعل،
مما يعني أنه عند الوصول إلى هذه النقطة،
فقد قام المستخدم بتسجيل الدخول بالفعل في وقت سابق،
لذلك لا تحتاج إلى التحقق.
لذلك سوف تقول ببساطة،
«أنت مصادق بالفعل»، ثم تنتهي في هذه المرحلة.
حسناً حتى الآن، فإن الطريقة الأخيرة التي سنقوم بتنفيذها هي لتسجيل خروج المستخدم.
لذلك، سنقوم بعمل جهاز توجيه. get على/تسجيل الخروج.
يجب أن تتساءل لماذا نفعل الحصول
على الخروج بدلا من وظيفة التي فعلناها على تسجيل الدخول?
عند تسجيل الدخول، تحتاج إلى تقديم اسم المستخدم وكلمة المرور.
لتسجيل الخروج، يمكنك ببساطة تسجيل الخروج من النظام،
لذلك لا تحتاج إلى توفير أي معلومات إضافية لأن
الخادم يتبعك بالفعل استنادًا إلى
معرف الجلسة الخاص بك وداخل ملف تعريف ارتباط الجلسة هذا هنا.
لذلك، هذا هو السبب في أننا لا
نحتاج صراحة إلى إرسال أي معلومات إضافية في نص الرسالة.
لذلك سنقول إذا req.session مما يعني أن الجلسة يجب أن تكون موجودة
، وإلا، فأنت تحاول تسجيل خروج مستخدم لم يسجل الدخول.
لذا هذا ليس منطقياً
الآن، توفر الجلسة نفسها هذه الطريقة
تسمى التدمير وعند استدعاء طريقة التدمير،
يتم تدمير الجلسة وإزالة المعلومات
من جانب الخادم المتعلقة بهذه الجلسة.
لذلك، مما يعني أنه إذا حاول العميل إرسال
معلومات الجلسة مرة أخرى التي يتم تخزينها في شكل
ملف تعريف ارتباط موقّع على جانب العميل،
فسيكون ذلك غير صالح.
لذلك نحن بحاجة إلى طريقة لحذف ملف تعريف الارتباط الذي يتم تخزينه على جانب العميل.
الآن، ستزيل هذه العملية
معلومات جلسة العمل من جانب الخادم بحيث لم تعد جلسة العمل صالحة.
لذا، في هذه المرحلة،
سنقول req.session.destroy وبعد ذلك سنقول، Res.ClearCookie.
لذا فإن ClearCookie هي طريقة لطلب العميل
إزالة ملف تعريف الارتباط واسم ملف تعريف الارتباط هو معرف الجلسة.
لذلك، في التمرين السابق،
رأينا أن ملف تعريف الارتباط تم تخزينه باسم معرف الجلسة على جانب العميل.
لذلك نحن نطلب من العميل حذف ملف تعريف الارتباط هذا من
جانب العميل في رسالة الرد ثم سنقول،
res.redirect وسنقوم بإعادة توجيهه إلى الصفحة الرئيسية هنا.
لذلك، هذه طريقة لإعادة توجيه المستخدم لإدخال صفحته القياسية،
لذلك على سبيل المثال، الصفحة الرئيسية للتطبيق الخاص بك.
لذا، هذه هي الطريقة التي تتعامل بها مع تسجيل الخروج من النظام.
إذا لم يكن req.session موجودًا،
فهذا يعني أنك لم تقم بتسجيل الدخول،
لذلك سيتعين علينا إنشاء خطأ.
لذلك سنقول var err،
خطأ جديد، «لم تقم بتسجيل الدخول»،
وسنقوم بتعيين حالة الخطأ إلى 403،
هذه عملية محظورة
ثم تولد الخطأ إلى معالج الخطأ، هذا كل شيء.
حتى الآن، ترى أننا قمنا بتوسيع جهاز التوجيه الخاص بالمستخدم لدعم ثلاث نقاط نهاية جديدة،
نقطة نهاية الاشتراك التي تسمح للمستخدم بالتسجيل،
ونقطة نهاية تسجيل الدخول التي تسمح للمستخدم تسجيل الدخول،
ثم نقطة نهاية الخروج التي تسمح للمستخدم تسجيل الدخول لتسجيل الخروج من النظام.
في عملية تسجيل الخروج،
كنت تدمير جلسة العمل على جانب الخادم،
وكنت أيضا مسح ملف تعريف الارتباط على جانب العميل،
بحيث لا يمكن استخدام العميل في جلسة منتهية الصلاحية لمحاولة الاتصال بهذا الخادم.
تصحيح بسيط واحد في users.js،
يجب أن يكون هذا var يتطلب المستخدم.. /النموذج/المستخدم،
أذكر أن ملف users.js في مجلد المسارات ثم
ملف user.js
في مجلد النماذج الذي هو أعلى مستوى ثم في مجلد النماذج.
لذا، هذا يَجِبُ أَنْ يَكُونَ.. /النماذج/المستخدم،
لذلك جعل هذا التصحيح الطفيف، هذا كل شيء.
لقد قمنا بتعديل ملف users.js،
والآن آخر شيء نحتاج إلى القيام به هو الذهاب وإصلاح ملف app.js.
في ملف app.js التطبيق،
إذا قمت بتصفح ملف app.js،
سترى أن لدينا
هذا الفهرس المائل هنا وشرطة مائلة للمستخدمين هنا بعد المصادقة.
الآن، لن يعمل هذا بالنسبة لنا لأنه إذا كنت بحاجة إلى التسجيل،
فسيقوم المستخدم بالتسجيل وتسجيل الدخول قبل تأكيد التفويض،
على أي حال إذا كان التسجيل وتسجيل الدخول لعملية التسجيل،
لذلك سأقوم بنقل هذه إلى ما يصل قبل خطوة المصادقة هنا.
لذا، نحن ذاهبون لنقل هذا إلى هذا الموقع.
وبالتالي، يمكن للمستخدم الوارد الوصول إلى ملف الفهرس
في الخط المائل وأيضا الوصول إلى نقطة نهاية المستخدمين دون مصادقتها،
ولكن أي نقطة نهاية أخرى،
يجب مصادقة المستخدم،
لذلك هذه هي الطريقة التي قمنا بإعداد هذا.
داخل مصادقة الدالة، سنقول،
«إذا لم يكن req.session.user»، ثم لاحظ أن هذا المكان،
ونحن لن نسمح للمستخدم أن يأتي هنا دون المستخدم بعد تسجيل الدخول.
لذلك، إذا لم يكن req.session.user،
فإننا ببساطة نقول أنك غير مصادق.
يجب إجراء هذه المصادقة باستخدام طريقة تسجيل الدخول هنا.
لذلك، أنا ذاهب لإزالة هذا الجزء كله هنا.
لذا، سنقول، إن لم يكن req.session.user،
سنقول أنك لم تتم مصادقتك، ولذا سيكون علينا إرسال صورة ثلاثة هنا،
مما يعني أنه يجب ألا ينزل إلى هذه النقطة على
الإطلاق دون تسجيل دخول المستخدم.
لذا، سنقول أنك غير مصدق.
تذكر أنك تحتاج إلى مصادقة نفسك عن طريق إجراء POST
على شرطة مائلة المستخدمين نقطة نهاية تسجيل الدخول.
لذلك سنقول أنك لم تتم مصادقتك، وإلا،
إذا كان req.session.user يساوي،
تذكر أنه في وظيفة تسجيل الدخول في
users.js قمنا بتعيين مستخدم الجلسة التالية إلى السلسلة التي تمت مصادقتها.
لذا، هذا ما سنقوم بالتحقق منه.
سنقول، إذا تمت مصادقة req.session.user،
فسنقول بعد ذلك، وإلا لم تتم مصادقتك مرة أخرى.
ثم سنرسل رسالة محرمة هذا هو
لذلك، مع هذا التحديث،
ملف app.js الخاص بي جاهز أيضا.
الآن، بعد إجراء هذه التحديثات،
دعنا نذهب والتحقق من كيفية عمل تطبيقنا الآن.
الذهاب إلى المحطة الطرفية،
إذا كان الخادم الخاص بك قيد التشغيل، ثم قم بإعادة تشغيل الخادم الخاص بك.
الخادم الخاص بي لا يعمل في الوقت الحالي،
لذلك سأقول بداية npm،
ويجب أن يكون خادمي قيد التشغيل.
دعونا نرى الآن كيف سنصل إلى الخادم.
الذهاب إلى ساعي البريد، اسمحوا لي أن أفعل GET على
localhost: 3000/أطباق وبعد ذلك سترى على الفور
أنه يشكو قائلا لم يتم مصادقتها.
من الواضح أنني لست مصدقة هنا
اسمحوا لي أن أحاول الوصول فقط إلى المضيف المحلي: 3000 وسترى
أن، هذا الجذر متاح لنا.
الآن، بالطبع، نريد أولاً تسجيل مستخدم ثم تسجيل الدخول
كمستخدم ثم الوصول بعد ذلك إلى بقية نقاط نهاية REST API.
لذلك، أولا، اسمحوا لي تسجيل مستخدم.
لتسجيل المستخدم،
أحتاج إلى القيام بوست إلى المضيف المحلي: 3000/المستخدم/الاشتراك.
بالنسبة إلى رسالة POST هذه،
في نص الرسالة،
أحتاج إلى تضمين
سلسلة JSON مع اسم المستخدم في نص الرسالة.
لذلك، اسمحوا لي تسجيل الدخول
نفسي وبعد ذلك سوف مجرد استخدام كلمة المرور ككلمة مرور.
هذا تسجيل صالح.
لذلك، عندما أقوم بالتسجيل كمستخدم
بهذه المعلومات في شكل سلسلة JSON المضمنة في نص الرسالة،
دعني أرى أن الرأس يحتوي الآن على تطبيق نوع المحتوى،
JSON لأنني قمت بإعداد JSON في نص
الرسالة ثم أرسل POST إلى الاشتراك.
ثم عندما أرسل بوست إلى الاشتراك،
سترى على الفور ما يتم إرجاعه من قبل الخادم هنا.
لذلك، ترى أن الخادم قد عاد قائلا،
«تسجيل ناجح»
ونفسه، فإنه يعطيني تفاصيل المستخدم هنا.
لذا، هذا هو سجل موجود في MongoDB الخاص بي
ولاحظ أن نوع النموذج هو نوع نموذج المستخدم الذي قمنا بإعداده.
لذلك، لدينا اسم المستخدم وكلمة المرور
ويتم تعيين علامة المشرف كما ترون إلى false افتراضيا.
بمجرد تسجيل المستخدم،
أصبح هذا المستخدم مستخدمًا صالحًا.
لذلك، اسمحوا لي أن أحاول مرة أخرى بوست نفس المستخدم ونرى ما يحدث.
لذلك، عندما أقوم بنشر نفس المستخدم بوضوح،
هناك من جانب الخادم،
فإنه يرد قائلا إن هذا المستخدم موجود بالفعل.
لذلك، يمكنك أن ترى أننا قمنا بإعداد إجراء الاشتراك لدينا لعدم
السماح للمستخدم بتكرار التسجيل مع نفس معرف المستخدم.
حسناً لذلك، هذا هو الجزء الثاني.
الآن، دعونا نفعل تسجيل الدخول للمستخدم.
للقيام بتسجيل الدخول للمستخدم،
اسمحوا لي إزالة نوع المحتوى وبعد ذلك سوف أيضا
إزالة الجسم بسبب تسجيل الدخول، وهذا غير مطلوب.
لذلك، لا أقوم بملء أي شيء
في الرأس ثم حاول تسجيل الدخول وعندما حاولت تسجيل الدخول،
فإنه يرد مرة أخرى قائلا أنك غير مصادق.
أنت غير مصرح به
الآن، أنا بحاجة لتسجيل نفسي في.
لذلك، هذا هو المكان الذي يمكنني استخدام المصادقة الأساسية.
لذا، في المصادقة الأساسية،
سأقوم فقط بكتابة اسم المستخدم وكلمة
المرور الخاصة بي التي قمت بتسجيلها للتو في الخطوة السابقة ثم قم بتحديث طلبي،
ثم قم بإجراء POST على تسجيل الدخول.
لذلك، عندما أفعل بوست على تسجيل الدخول،
ترى أن الخادم يرد قائلا، «أنت مصادق».
لذلك، في هذه المرحلة،
يمكنني تنفيذ
طلبات GET و PUT و POST و DELETE على جميع نقاط النهاية الأخرى.
لذلك، في هذه المرحلة، إذا قمت بعمل GET على نقطة نهاية الأطباق،
سترى أن هذا يعيد
الحقل الفارغ لأن قاعدة البيانات الخاصة بي فارغة حاليًا في الوقت الحالي.
اسمحوا لي أن مسح التفويض وأيضا من رأس إزالة
التفويض ثم القيام GET وانها مربع الأدوات على ما يرام.
لذلك، يمكنك أن ترى أنني الآن قادرة على
الوصول إلى نقاط النهاية لأنني قمت بتسجيل نفسي في.
حتى الآن، اسمحوا لي أن القيام بتسجيل الخروج من المستخدم.
لذلك، سنقول، المضيف المحلي: 3000 وتسجيل الخروج.
لاحظ أيضًا أنه في ملفات تعريف
الارتباط، تم إعداد ملف تعريف ارتباط في معرف الجلسة هناك.
لذلك، ملف تعريف الارتباط هذا موجود على موقع العميل الخاص بي.
حتى الآن، اسمحوا لي تسجيل نفسي من خلال قول جيت لوكالهوست: 3000/المستخدمين/تسجيل الخروج.
لذلك، عندما أقوم بتسجيل الخروج من المستخدم،
سترى على الفور أنني أعيد
توجيهي إلى هذا المضيف المحلي: 3000 نقطة نهاية وأيضا لاحظ أن ملف تعريف الارتباط قد ذهب.
لذلك، عندما أنظر إلى ملفات تعريف الارتباط،
ترى أن المضيف المحلي،
فقد ملف تعريف الارتباط لأنه من جانب الخادم الخاص بي عندما أقوم بتسجيل الخروج
فإنه يرسل ملف تعريف ارتباط واضح إلى جانب العميل وبالتالي فقد ملف تعريف الارتباط.
الآن، إذا حاولت إجراء GET
على المضيف المحلي: 3000/dails نقطة النهاية،
فلن يعمل هذا لأنني غير مصادق عليه.
لذلك، يوضح لك هذا كيف يمكنك توسيع خادم Express الخاص بك
للسماح للمستخدمين بتسجيل أنفسهم ومن ثم السماح للمستخدم بتسجيل الدخول إلى النظام،
ومن ثم أيضا الخروج من النظام.
على جانب الخادم، تقوم بتتبع مستخدم قام بتسجيل الدخول باستخدام الجلسة واستخدام
ملف تعريف الارتباط على جانب العميل وعندما يقوم المستخدم بتسجيل
الخروج يتم إتلاف ملف تعريف الارتباط على جانب العميل.
مع هذا، نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام ارتكاب جيت،
مع الرسالة، اكسبرس جلسات الجزء الثاني.