عندما يحتاج تطبيق الويب الخاص بك إلى "تذكر" المستخدمين ، فإنه يستخدم عادةً إحدى آليتين: ملفات تعريف الارتباط أو الجلسات. ملف تعريف الارتباط هو مساحة تخزين صغيرة في المتصفح حيث يمكنك الاحتفاظ بالبيانات المتعلقة بالمستخدم مثل تفضيلات البحث ، على سبيل المثال. تتيح لك الجلسات تخزين المعلومات الحساسة على الخادم بدلاً من ذلك.
اكتشف كيفية إعداد الجلسات في خادم Express مدعوم من Node.js.
ماذا ستحتاج
لمتابعة هذا البرنامج التعليمي ، تحتاج إلى تثبيت كل من Node.js و npm. أي إصدار حديث من Node.js يجب أن يأتي معها npm ، مدير حزم لتثبيت التبعيات.
ستستخدم npm لتثبيت Express و express-session. هذه هي الأدوات التي ستستخدمها لإنشاء خادم الويب والجلسة.
ما هي الجلسة في Node.js؟
ملف تعريف الارتباط هو ملف صغير يستخدمه متصفحك لتخزين البيانات. يمكنك استخدام ملفات تعريف الارتباط لتخزين البيانات غير الحساسة مثل تفضيلات البحث.
يجب ألا تخزن البيانات الحساسة (مثل أسماء المستخدمين وكلمات المرور) في ملفات تعريف الارتباط. عندما يرسل متصفحك ملفات تعريف الارتباط عبر HTTP ، فإنها تكون عرضة للقراصنة الذين قد يتمكنون من اعتراضها. يتم تخزينها أيضًا في نص عادي على جهاز الكمبيوتر الخاص بك ، لذلك من المحتمل أن يقوم المتسللون بفحصها وسرقة بياناتك.
بدلاً من حفظ البيانات الحساسة كملف تعريف ارتباط على العميل ، يجب عليك تخزينها على الخادم. هذا يحميها من العالم الخارجي.
تتيح لك الجلسات تخزين البيانات الحساسة التي يحتاجها تطبيقك لتحديد هوية المستخدم. الأمثلة هي اسم المستخدم وكلمة المرور والبريد الإلكتروني. إنهم أكثر أمانًا لأنهم يعيشون على الخادم وليس العميل.
في أي وقت لديك بيانات تريد استمرارها عبر الطلبات ، احفظها على جانب الخادم باستخدام جلسة. ستتعلم كيفية إنشاء جلسة في القسم التالي.
إنشاء جلسة في خادم Express
Express هو إطار عمل ويب شائع لـ Node.js. يتيح لك إعداد تطبيق خادم ويب يستمع إلى طلبات العميل على رقم المنفذ الذي اخترته. يمكنك إنشاء مسارات API وتطبيق البرامج الوسيطة وحتى توصيل التطبيق بقاعدة بيانات ، كل ذلك بفضل واجهات برمجة التطبيقات التي يوفرها إطار العمل.
1. أنشئ مشروع Node.js
قم بإنشاء مجلد جديد تمامًا لمشروعك ، ثم قم بتشغيل أداة سطر الأوامر والقرص المضغوط في هذا المجلد.
بعد ذلك ، قم بتشغيل الأمر التالي لتهيئة مشروع Node.js:
npm الحرف الأول
يؤدي هذا إلى إنشاء ملف package.json في المجلد الجذر للمشروع مع الإعداد الافتراضي. ملف package.json للتشغيل البرامج النصية npm.
2. تثبيت Express و express-session
ستستخدم Express لإنشاء تطبيق خادم الويب. و Express-session لإنشاء جلسات على تطبيق الخادم هذا.
على الجهاز ، قم بتشغيل الأمر التالي لتثبيت كلا التبعيتين:
npm أنا صريح الجلسة
بعد تثبيت كلتا الحزمتين ، ستكون الخطوة التالية هي إنشاء الخادم.
3. إنشاء جلسات في التطبيق
أنشئ ملفًا باسم App.js في المجلد الجذر لمشروعك واستورد التبعيات:
مقدار ثابت صريح = يتطلب('يعبر')
مقدار ثابت جلسة = يتطلب("جلسة سريعة")
التطبيق = صريح ()
بعد ذلك ، قم بتسجيل البرامج الوسيطة للجلسة. قم بتمرير كائن بامتداد سر الخاصية (لتوقيع ملف تعريف الارتباط sessionID) وملف تعريف الارتباط.
app.use (
حصة({
سر: "بعض السر",
بسكويت: { العمر الأقصى: 30000 },
حفظ غير مهيأ: خطأ شنيع,
})
);
هنا تقوم بتعيين أكبر عمر للجلسة على 30 ثانية (30000 ميلي ثانية). يعد إعداد saveUnitized to false أمرًا ضروريًا إذا كان لديك نظام تسجيل دخول. إذا فشلت في القيام بذلك ، فسيقوم الخادم الخاص بك بإنشاء معرف جلسة جديد في كل مرة يرسل فيها المستخدم طلبًا.
بعد ذلك ، قم بإنشاء مسار تسجيل الدخول لتغيير الجلسة. عندما يضرب المستخدم هذا المسار ، تتوقع أن يرسل العميل اسم المستخدم وكلمة المرور في نص الطلب. أولاً ، يمكنك الوصول إلى هذه القيم والتحقق مما إذا كانت موجودة (وما إذا كان المستخدم قد صدق عليها):
app.post ("/تسجيل الدخول"، (مطلوب ، الدقة) => {
مقدار ثابت {اسم المستخدم ، كلمة المرور} = req.body ؛
لو (اسم المستخدم كلمة المرور) {
لو (req.session.authenticated) {
res.json (جلسة) ؛
} آخر {
لو (كلمة المرور "123") {
مصادقة الطلب = حقيقي;
req.session.user = {اسم المستخدم} ؛
res.json (جلسة طلب) ؛
} آخر {
res.status (403) .json ({ msg: "أوراق سيئة" });
}
}
} آخر {
res.status (403) .json ({ msg: "أوراق سيئة" });
}
});
باستخدام عبارة if الأولى ، تقوم بإجراء فحص وهمي. يهدف هذا الفحص إلى التأكد من المتابعة فقط في حالة وجود اسم المستخدم وكلمة المرور.
بعد ذلك ، تحقق مما إذا كان المستخدم قد تمت مصادقته بالفعل. إذا كان الأمر كذلك ، فأرسل الجلسة مرة أخرى إلى العميل. إذا لم يكن الأمر كذلك ، فاضبط الخاصية المصادق عليها على صواب واحفظ اسم المستخدم في الجلسة. ثم أرسلها مرة أخرى إلى العميل.
باستخدام الكود أعلاه ، سيتذكر الخادم كل مستخدم يرسل طلبًا إلى الخادم. هذا بسبب مصادقتهم وحفظ تفاصيلهم الفريدة (اسم المستخدم وكلمة المرور) في الجلسة.
ابدأ الخادم الخاص بك عن طريق إضافة الكود التالي في الجزء السفلي من App.js:
app.listen (3000, () => {
وحدة التحكم.سجل("الخادم يعمل على المنفذ 3000");
});
لاختبار هذا المسار ، استخدم عميل API لإرسال طلب إلى مسار تسجيل الدخول الذي أنشأته. تأكد من إرسال اسم المستخدم وكلمة المرور في نص الطلب. إليك كيف سيبدو طلب API الخاص بك إذا كنت تستخدم Rest Client:
نشر http:// المضيف المحلي: 3000 / تسجيل الدخول HTTP / 1.1
نوع المحتوى: "التطبيق / json"
{ اسم المستخدم: "كينغسلي"، كلمة المرور: "123"}
إذا سارت الأمور على ما يرام ، فستحصل على الكائن التالي:
{
"بسكويت": {
"originalMaxAge": 30000,
"httpOnly": حقيقي,
"طريق": "/"
},
"مصدق": حقيقي,
"مستخدم": {
"اسم المستخدم": "كينغسلي",
"كلمة المرور": "123"
}
}
مع هذا الرمز ، حدث شيئان. أولاً ، لقد قمت بالمصادقة على الخادم. ثانيًا ، تحتوي الجلسة الآن على تفاصيل تسجيل الدخول الخاصة بك ، لذلك يعرف الخادم الآن من أنت. في أي وقت ترسل فيه طلبًا جديدًا ، سوف يتذكرك حتى تنتهي الجلسة ويقوم الخادم بإزالتها.
جلسات تحسين تجربة المستخدم
تعد الجلسات جزءًا حيويًا من تطبيقات Node.js. هذا لأنها تسمح لك بالحفاظ على حالة من التفاعل عبر العديد من الطلبات والاستجابات. الجلسات مهمة بشكل خاص للتطبيقات التي تتطلب منك تسجيل الدخول.
استخدم الجلسات في تطبيق الواجهة الخلفية لتتبع البيانات الخاصة بالمستخدم. مثال على هذه البيانات هو العناصر التي أضافها المستخدم إلى عربة التسوق.
بدون الجلسات ، سيتعين عليك الاحتفاظ بمخزن بيانات منفصل لكل مستخدم في تطبيقك. سيكون هذا غير فعال ويزيد من تعقيد التطبيق.
يبسط Express.js الجلسات والتوجيه والمزيد
يعد Express.js أكثر إطار عمل ويب Node.js شيوعًا قيد الاستخدام حاليًا. يوفر العديد من الأدوات والمكتبات لإنشاء تطبيقات خلفية ، ومكتبة الجلسة السريعة هي واحدة منها فقط.
إذا كنت تريد استخدام Node.js لتطوير الويب الخلفي ، فقم بإلقاء نظرة على Express.