كيفية التحقق مما إذا كان المستخدم مسجل الدخول على Discourse من موقع آخر

أهلاً بالجميع،

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

أعتقد أن الأداة المناسبة للاستخدام هي: GitHub - discourse/discourse-auth-proxy: An http proxy that uses the DiscourseConnect protocol to authenticate users

هل هناك أي وثائق خطوة بخطوة لاستخدامه؟

هل يمكنني تثبيته على نفس DigitalOcean droplet الخاص بموقع Discourse الخاص بنا، أم أحتاج إلى استضافته في مكان آخر؟

هل يمكنني الحصول على بعض المساعدة في استخدام Discourse Auth Proxy؟

لدي Discourse على Digital Ocean droplet، وموقع PHP على خادم منفصل.

يمكنك القيام بذلك باستخدام DiscourseConnect (مع عمل Discourse كموفر للمصادقة): Use Discourse as an identity provider (SSO, DiscourseConnect).

لم أجربه بعد، ولكن قد يكون المعامل prompt مفيدًا لحالتك:

  • prompt: إذا كان prompt=none، فسيتم التعامل مع طلب SSO على أنه طلب “للتحقق فقط”. إذا كان المتصفح/الجهاز قد قام بتسجيل الدخول بالفعل إلى Discourse، فسيعيد Discourse استجابة SSO ناجحة تحمل معلومات مصادقة المستخدم، كالمعتاد. إذا لم يكن المتصفح/الجهاز قد قام بتسجيل الدخول بالفعل، فلن يطلب Discourse من المستخدم تسجيل الدخول، وسيقوم على الفور بإعادة استجابة SSO تحمل المعامل failed=true بدلاً من معلومات المستخدم. يوفر هذا آلية للاستعلام عما إذا كان المستخدم قد قام بتسجيل الدخول، دون توجيه المستخدم أبدًا إلى مربع حوار تسجيل الدخول إذا لم يكن كذلك.
إعجاب واحد (1)

يبدو هذا واعدًا يا @simon. لم أدرك أن DiscourseConnect يمكن أن يعمل حتى بدون تمكين enable discourse connect ولكن يبدو أنه يمكن! :thinking:

سأجري بعض الاختبارات وأبلغكم بالنتائج - شكرًا لك على توجيهي في هذا المسار!

إعجاب واحد (1)

أتساءل عما إذا كان استخدام Discourse كمزود للمصادقة يتم تجاهله بسبب اسمه (DiscourseConnect). على سبيل المثال، مجرد إضافة مصطلح DiscourseConnect إلى منشور هنا ينشئ رابطًا إلى الموضوع المتعلق باستخدام موقع خارجي كمزود للمصادقة لـ Discourse. استخدام Discourse كمزود للمصادقة هو أحد مبرراتي الرئيسية لوجود موقع Discourse.

في حال كان ذلك مفيدًا، تسمح إضافة WordPress لـ Discourse بالعمل كمزود للمصادقة. الكود ذو الصلة هنا: wp-discourse/lib/sso-client at main · discourse/wp-discourse · GitHub. قد يكون الكود معقدًا بعض الشيء.

إليك تطبيق أبسط لتطبيق Remix/React: discourse_remix_comments/app/routes/login.tsx at main · scossar/discourse_remix_comments · GitHub. إذا تجاهلت أمور TypeScript، فلا يوجد الكثير فيه.

3 إعجابات

@simon أردت فقط أن أكتب إليك وأشكرك. أعتقد أن اقتراحك السابق هو الإجابة الصحيحة. لقد واجهت صعوبة في تنفيذه على موقعي، ولكن يبدو أن المشكلة تكمن في الغالب في أنه نظام إدارة محتوى مخصص جزئيًا وبه الكثير من التعليمات البرمجية الهشة التي تعيق الطريق.

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.