Passport.js لجافا سكريبت (Node.js): دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Passport.js ولماذا تحتاجه؟

Passport.js هي المكتبة الأكثر شهرة ومرونة للمصادقة في تطبيقات Node.js. صُمّمت وفق مبدأ "middleware" (الطبقة الوسيطة) لـ Express.js، مما يسمح بدمجها بسهولة في أي خادم ويب. المهمة الأساسية لـ Passport.js هي تبسيط عملية التحقق من هوية المستخدمين، من خلال توفير واجهة موحدة للعمل مع عشرات الاستراتيجيات المختلفة للمصادقة.

لماذا تحتاج هذه المكتبة؟ في تطوير الويب الحديث، المصادقة ليست مجرد التحقق من اسم المستخدم وكلمة المرور. يتوقع المستخدمون إمكانية تسجيل الدخول عبر شبكات التواصل الاجتماعي (Google، Facebook، تويتر)، أو عبر الأنظمة المؤسسية (LDAP، SAML)، أو باستخدام رموز JWT، أو رموز الاستخدام لمرة واحدة. كل من هذه الطرق يتطلب منطقًا خاصًا به، واستعلامات API خاصة، ومعالجة للأخطاء. Passport.js تُجرّد هذا التعقيد، وتقدم نمطًا موحدًا: تختار "استراتيجية" (Strategy)، وتُهيئها، وتتولى المكتبة كل المهام الروتينية لمعالجة الطلبات والجلسات وعمليات إعادة التوجيه.

المزايا الرئيسية لـ Passport.js:

  • النمطية: أكثر من 500 استراتيجية تغطي تقريبًا جميع طرق المصادقة الموجودة.
  • سهولة الدمج: تعمل كـ middleware لـ Express.js، مما يجعل الكود نظيفًا وقابلًا للتوقع.
  • الاستقلال عن قاعدة البيانات: المكتبة لا تفرض طريقة تخزين المستخدمين — أنت من يقرر كيف وأين تخزن البيانات (MongoDB، PostgreSQL، ملفات).
  • الأمان: دعم مدمج للجلسات، حماية من CSRF (عبر وحدات إضافية)، ومعالجة صحيحة لكلمات المرور.
  • المرونة: يمكنك دمج الاستراتيجيات، وإنشاء استراتيجيات مخصصة، وتعديل السلوك ليناسب أي متطلبات عمل.

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

تثبيت المكتبة

يتم تثبيت Passport.js والاستراتيجيات المطلوبة عبر مدير الحزم npm. التثبيت الأساسي يشمل نواة المكتبة وإحدى الاستراتيجيات (غالبًا passport-local للمصادقة باسم المستخدم وكلمة المرور).

# تثبيت نواة Passport.js
npm install passport

# تثبيت استراتيجية المصادقة المحلية (اسم مستخدم/كلمة مرور)
npm install passport-local

# تثبيت استراتيجية JWT (JSON Web Tokens)
npm install passport-jwt

# تثبيت استراتيجية OAuth 2.0 (Google، Facebook، وغيرها)
npm install passport-google-oauth20

# إضافي: للعمل مع الجلسات (إذا كنت لا تستخدم JWT)
npm install express-session

# لتشفير كلمات المرور (موصى به)
npm install bcryptjs

لاحظ: passport هي فقط النواة. طرق المصادقة المحددة (عبر Google، Facebook، محليًا، إلخ) تُنفّذ عبر حزم استراتيجيات منفصلة. يوجد المئات منها، ويمكنك العثور على ما تحتاجه على الموقع الرسمي passportjs.org/packages/.

بداية سريعة مع مثال كود

لنقم بإنشاء تطبيق بسيط على Express.js مع مصادقة محلية (اسم مستخدم وكلمة مرور). هذا المثال سيُظهر البنية الأساسية لعمل Passport.js.

الخطوة 1: أنشئ ملف app.js وقم بتثبيت التبعيات.

const express = require('express');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const session = require('express-session');
const bcrypt = require('bcryptjs');

const app = express();

// إعداد middleware لتحليل جسم الطلب
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// إعداد الجلسات (إلزامي لـ passport مع الجلسات)
app.use(session({
    secret: 'your-secret-key',
    resave: false,
    saveU                    

توصيات