لدي موقع WordPress يعمل كمزود SSO لمنتدى Discourse باستخدام إضافة WPDiscourse، المنتدى عام، ولكنه يحتوي على بعض المجموعات الخاصة.
عندما أرغب في إضافة أزرار تنقل المستخدمين من موقع WordPress الخاص بي إلى مجموعة خاصة في Discourse، أستخدم عنوان URL الخاص بـ SSO كما هو مذكور هنا، حتى لا يصل المستخدمون إلى صفحة “عذرًا! هذه الصفحة غير موجودة أو خاصة.”
ولكن عندما يقوم المستخدمون بالمصادقة بالفعل عبر SSO في Discourse، ويعودون ويضغطون على نفس الأزرار، سيصلون إلى صفحة تسجيل الدخول مرة أخرى، حتى لو قاموا بتحديد مربع “تذكرني” أثناء تسجيل الدخول. من الناحية المثالية، سيكونون قادرين على التنقل إلى المجموعات الخاصة بحرية بمجرد المصادقة في Discourse SSO.
هل هناك طريقة أفضل لإعداد هذا؟
فكرت في إضافة رمز إلى صفحة تسجيل الدخول في WordPress والتحقق مما إذا كان المستخدم قد قام بتسجيل الدخول بالفعل في Discourse، وإذا كان الأمر كذلك، إعادة توجيهه إلى الصفحة الموجودة في وسيطة “return_path” في عنوان URL. هل سيكون هذا حلاً بديلاً؟ إذا كان الأمر كذلك، ما هي الوظائف أو استدعاءات API التي يمكنني استخدامها لتحقيق ذلك؟
إذا كان المستخدمون مسجلين الدخول بالفعل في موقع ووردبريس الخاص بك، فلا ينبغي أن يحدث هذا. هل يمكنك توضيح ما إذا كان المستخدمون الذين يحدث هذا لهم مسجلين الدخول إلى ووردبريس؟ إذا كانوا مسجلين الدخول، فمن المتوقع أن يتم إعادة توجيههم بصمت إلى عنوان URL الخاص بـ Discourse الذي قمت بتعيينه في الوسيط return_path.
شكرًا سيمون، نعم، المستخدم مسجل الدخول في ووردبريس.
الغريب في السيناريو الخاص بي هو أن لدي موقع ووردبريس رئيسي واحد (WPSite1) وهو مزود DiscourseConnect لـ Discourse باستخدام WP Discourse،
ثم لدي موقع ووردبريس ثانٍ (WPSite2) يقوم بمزامنة قاعدة بيانات المستخدمين مع WPSite1 باستخدام إضافة WP Remote User Synch.
لا أعرف لماذا قد يتعارض ذلك مع السلوك المتوقع الذي ذكرته، لأنه عندما أسجل الدخول في WPSite2، ثم أنتقل إلى WPSite1، أكون مسجل الدخول بالفعل في WPSite1 أيضًا.
ولكن ما يحدث هو أنه حتى بعد تسجيل الدخول في WPSite1، وهو مزود DiscourseConnect، وانقر على عنوان URL مثل https://discourse.example.com/session/sso?return_path=/g/private_group، فإنه يأخذني إلى نموذج تسجيل الدخول SSO الخاص بووردبريس.
السيناريو الثاني هو الحالة.
سأقوم بمراجعة التعليمات ولكن أعتقد أن كل شيء تم إعداده بشكل صحيح نظرًا لأن تسجيل الدخول عبر SSO يعمل، والمشكلة هي أن صفحة تسجيل الدخول لا تتعرف على أن المستخدم مصادق عليه بالفعل.