جلسات اكسبريس

كيفية استخدام الجلسات لتحديد المستخدمين عبر الطلبات

بشكل افتراضي ، تكون الطلبات السريعة متسلسلة ولا يمكن ربط أي طلب ببعضه البعض. لا توجد طريقة لمعرفة ما إذا كان هذا الطلب يأتي من عميل سبق له تنفيذ طلب مسبقًا.

لا يمكن التعرف على المستخدمين ما لم يتم استخدام نوع من الآلية التي تجعل ذلك ممكنًا.

هذا ما هي الجلسات.

عند التنفيذ ، سيتم تعيين جلسة فريدة لكل مستخدم لواجهة برمجة التطبيقات أو موقع الويب الخاص بك ، وهذا يسمح لك بتخزين حالة المستخدم.

سنستخدم ملفexpress-sessionالوحدة النمطية ، التي يحتفظ بها فريق Express.

يمكنك تثبيته باستخدام

npm install express-session

وبمجرد الانتهاء من ذلك ، يمكنك إنشاء مثيل له في تطبيقك باستخدام

const session = require('express-session')

هذا وسيط ، لذلك أنتتثبيتفي Express باستخدام

const express = require('express')
const session = require('express-session')

const app = express() app.use(session({ ‘secret’: ‘343ji43j4n3jn4jk3n’ }))

بعد الانتهاء من ذلك ، تستخدم جميع الطلبات إلى مسارات التطبيق الجلسات الآن.

secretهي المعلمة الوحيدة المطلوبة ، ولكن هناك الكثير الذي يمكنك استخدامه. يجب أن تكون سلسلة فريدة عشوائيًا لتطبيقك.

الجلسة مرفقة بالطلب ، لذا يمكنك الوصول إليها باستخدامreq.sessionهنا:

app.get('/', (req, res, next) => {
  // req.session
}

يمكن استخدام هذا الكائن لإخراج البيانات من الجلسة ، وكذلك لتعيين البيانات:

req.session.name = 'Flavio'
console.log(req.session.name) // 'Flavio'

هذه البيانات متسلسلة كـجسونعند التخزين ، لذلك يمكنك استخدام الكائنات المتداخلة بأمان.

يمكنك استخدام الجلسات لتوصيل البيانات إلى البرامج الوسيطة التي يتم تنفيذها لاحقًا ، أو لاستردادها لاحقًا ، بناءً على الطلبات اللاحقة.

أين يتم تخزين بيانات الجلسة؟ يعتمد ذلك على كيفية إعداد ملفexpress-sessionوحدة.

يمكنه تخزين بيانات الجلسة بتنسيق

  • ذاكرة، غير مخصص للإنتاج
  • أقاعدة البياناتمثل MySQL أو Mongo
  • أذاكرة التخزين المؤقتمثل Redis أو Memcached

توجد قائمة كبيرة من الحزم الثالثة التي تنفذ مجموعة متنوعة من مخازن التخزين المؤقت المتوافقة المختلفة بتنسيقhttps://github.com/expressjs/session

تخزن جميع الحلول معرف الجلسة في ملف تعريف ارتباط ، وتحافظ على جانب خادم البيانات. سيتلقى العميل معرف الجلسة في ملف تعريف ارتباط ، وسيقوم بإرساله مع كل طلب HTTP.

سنشير إلى جانب الخادم هذا لربط معرف الجلسة بالبيانات المخزنة محليًا.

الذاكرة هي الوضع الافتراضي ، فهي لا تتطلب أي إعداد خاص من جانبك ، إنها أبسط شيء ولكنها مخصصة فقط لأغراض التطوير.

الخيار الأفضل هو ذاكرة تخزين مؤقت مثل Redis ، والتي تحتاج إلى إعداد بنيتها التحتية الخاصة.

حزمة أخرى شائعة لإدارة الجلسات في Express هيcookie-session، والذي له فرق كبير: فهو يخزن البيانات من جانب العميل في ملف تعريف الارتباط. لا أوصي بذلك لأن تخزين البيانات في ملفات تعريف الارتباط يعني أنها مخزنة من جانب العميل ، ويتم إرسالها ذهابًا وإيابًا في كل طلب فردي يقدمه المستخدم. كما أنه محدود الحجم ، حيث يمكنه تخزين 4 كيلوبايت فقط من البيانات. تحتاج ملفات تعريف الارتباط أيضًا إلى الحماية ، لكنها ليست كذلك افتراضيًا ، نظرًا لأن ملفات تعريف الارتباط الآمنة ممكنة على مواقع HTTPS وتحتاج إلى تكوينها إذا كان لديك وكلاء.

تحميل مجانيكتيب Express.js


المزيد من البرامج التعليمية السريعة: