العربية
  • nodejs
  • javascript
  • sdk
  • express

إنشاء حزمة SDK لإطار عمل يعتمد على Node.js لـ Logto في دقائق

تعلم كيفية إنشاء حزمة SDK مخصصة لـ Logto باستخدام `@logto/node`.

Sijie
Sijie
Developer

في هذه المقالة السابقة، قمنا بإنشاء حزمة SDK للويب لـ Logto في دقائق. الآن، دعنا نركز على Node.js، منصة شائعة أخرى لمطوري JavaScript.

في هذا الدليل، سنرشدك خلال الخطوات لإنشاء حزمة SDK بسيطة لـ Express لـ Logto باستخدام @logto/node. ستنفذ حزمة SDK هذه تدفق تسجيل الدخول، ويمكنك اتباع نفس الخطوات لإنشاء حزمة SDK لأي منصة أخرى تعتمد على Node.js مثل Koa، Next.js، NestJS، إلخ.

تدفق تسجيل الدخول

قبل أن نبدأ، دعونا نراجع تدفق تسجيل الدخول في Logto. يتكون تدفق تسجيل الدخول من الخطوات التالية:

  1. إعادة التوجيه إلى Logto: يتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول في Logto.
  2. التحقق: يدخل المستخدم بيانات الاعتماد الخاصة به ويتحقق من الدخول مع Logto.
  3. إعادة التوجيه إلى تطبيقك: بعد التحقق الناجح، يتم إعادة توجيه المستخدم مرة أخرى إلى تطبيقك مع رمز مصادقة.
  4. تبادل الرمز: يقوم تطبيقك بتبادل رمز المصادقة للحصول على رموز ويخزن الرموز كحالة مصادقة.

مقدمة موجزة حول @logto/node

مشابهة لـ @logto/browser، يوفر حزمة @logto/node فئة LogtoClient التي توفر الوظائف الأساسية لـ Logto، بما في ذلك أساليب لتدفق تسجيل الدخول:

  1. signIn(): ينشئ رابط OIDC للمصادقة ويعيد التوجيه إليه.
  2. handleSignInCallback(): يتحقق ويحلل رابط إعادة التوجيه ويستخرج رمز المصادقة، ثم يتبادل الرمز للحصول على رموز عن طريق الاتصال بنقطة نهاية الرموز.
  3. getContext(): الحصول على سياق الطلب الحالي بناءً على ملف الارتباط في الجلسة، بما في ذلك حالة المصادقة ومعلومات المستخدم.

إنشاء حزمة SDK لـ Express

في حزمة SDK، سنوفر معالجي مسار (/sign-in و/sign-in-callback) إلى جانب وسيط withLogto:

  1. /sign-in: معالج مسار يطلق تدفق التسجيل في الدخول مع استجابة يعيد التوجيه إلى رابط مصادقة OIDC.
  2. /sign-in-callback: معالج مسار يعالج رابط إعادة التوجيه، يتبادل رمز المصادقة للحصول على رموز ويخزنها ويكمل تدفق التسجيل في الدخول.
  3. وسيط withLogto: وسيط يستدعي getContext() للحصول على سياق الطلب الحالي، بما في ذلك حالة المصادقة ومعلومات المستخدم.

لاستخدام حزمة SDK، يمكنك ببساطة إضافة الوسيط إلى تطبيق Express الخاص بك لحماية المسارات واستخدام معالجات المسار لبدء تدفق التسجيل في الدخول ومعالجة إعادة التوجيه.

الخطوة 1: تثبيت الحزمة

أولاً، ثبّت حزمة @logto/node باستخدام npm أو غيرها من مديرات الحزم:

الخطوة 2: تحضير مهايئ التخزين

يتطلب مهايئ التخزين لتفعيل مثيل LogtoClient.

بالافتراض أن مستخدم حزمة SDK قد قام بالفعل بإعداد جلسة express، يمكننا ببساطة تنفيذ فئة Storage عن طريق إنشاء ملف جديد storage.ts:

الخطوة 3: تنفيذ معالجات المسار

الطلب HTTP خالٍ من الحالة، لذا نحتاج إلى تفعيل مثيل العميل لكل طلب. دعنا نقوم بتحضير مُساعد دالة لإنشاء مثيل العميل:

في هذه الدالة، نقوم بتنفيذ مهايئ navigate مع مهايئ ExpressStorage. يُستخدم مهايئ navigate لإعادة توجيه المستخدم إلى رابط تسجيل الدخول.

الآن، دعنا نقوم بتنفيذ معالجات المسار، مغلفة في دالة handleAuthRoutes:

  1. معالج المسار /auth/sign-in يطلق تدفق التسجيل في الدخول عن طريق استدعاء signIn()، يتم تخزين حالة التسجيل في الجلسة وسيتم استهلاكها بواسطة معالج المسار /auth/sign-in-callback.
  2. معالج المسار /auth/sign-in-callback يعالج رابط إعادة التوجيه ويتبادل رمز المصادقة للحصول على رموز عن طريق استدعاء handleSignInCallback(). يتم تخزين الرموز في الجلسة بواسطة مهايئ ExpressStorage. بعد الانتهاء من التبادل، يتم إعادة توجيه المستخدم إلى الصفحة الرئيسية.

الخطوة 4: تنفيذ الوسيط

يُستخدم وسيط withLogto لحماية المسارات. يقوم باستدعاء getContext() للحصول على سياق الطلب الحالي، بما في ذلك حالة المصادقة ومعلومات المستخدم.

تستخدم دالة getContext مهايئ التخزين للحصول على الرموز من الجلسة.

نقطة التحقق: استخدام حزمة SDK

الآن بعد أن قمت بإنشاء حزمة SDK لـ Express لـ Logto، يمكنك استخدامها في تطبيقك عن طريق إضافة الوسيط لحماية المسارات واستخدام معالجات المسار لبدء تدفق التسجيل في الدخول ومعالجة إعادة التوجيه.

إليك مثال بسيط عن كيفية استخدام حزمة SDK في تطبيق Express الخاص بك:

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

يمكنك التحقق من مشروع Express التجريبي الرسمي هنا.

الخاتمة

في هذا الدليل، قمنا بإرشادك خلال الخطوات لإنشاء حزمة SDK لـ Express لـ Logto تنفذ تدفق المصادقة الأساسي. حزمة SDK المقدمة هنا هي مثال أساسي. يمكنك توسيعها عن طريق إضافة المزيد من الأساليب والوظائف لتلبية احتياجات تطبيقك.

يمكنك اتباع نفس الخطوات لإنشاء حزمة SDK لأي منصة تعتمد على JavaScript تشتغل في Node.js.

الموارد:

  1. Logto Node SDK
  2. Logto Express SDK