خطأ في SSO discourse في نفس الجلسة

مرحبًا، أستخدم SSO لتسجيل الدخول إلى WordPress عبر Discourse. لقد استخدمت إضافة Discourse لـ WordPress.

في البداية عملت بسلاسة.

ولكن عندما أكون في نفس الجلسة (دون تسجيل الخروج)، وأحاول الانتقال إلى رابط الإدارة /wp-admin/، لا يتم إعادة توجيهي إلى لوحة التحكم، بل تظهر هذه الرسالة في نموذج تسجيل الدخول:

رمز Nonce منتهي الصلاحية

يبدو أن هناك مشكلة في الجلسة أو ملفات تعريف الارتباط (cookies).

هذا الأمر يسبب ارتباكًا للمستخدم، خاصة أنني أستخدم تسجيل الدخول عبر Google مع SSO.

أعتقد أن المشكلة التي تواجهها سببها التخزين المؤقت للكائنات (object caching) على خادمك. جرّب إضافة كود مشابه لما يلي إلى ملف functions.php في قالب ووردبريس الخاص بك لمعرفة ما إذا كان ذلك يحل المشكلة:

add_filter('wpdc_sso_client_query', 'wpdc_custom_sso_client_query' );
function wpdc_custom_sso_client_query() {
    return wp_generate_password( 12, false );
}

هناك بعض التفاصيل حول هذا الموضوع هنا: Wordpress SSO Expired nonce - #15 by simon.

لا يزال الفشل يحدث مع هذا الكود
Discourse غير متوافق مع Cloudflare، لكنني أستخدم Cloudflare لحماية موقعي. هل هذا مقبول؟

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

يتوقف عند هذا الرابط:

/wp-login.php?discourse_sso_error=expired_nonce

أعتقد أن المشكلة ليست في Cloudflare، لأنني قمت بإعداد هذه القاعدة للاختبار لتجاوزها:

الاختبار المثير للاهتمام الذي وجدته هو أن ليس كل رابط في إضافة الخاص بك فاشل

هذا الرابط يعمل بشكل طبيعي:

/?discourse_sso=7cygqwtc8aaz&redirect_to=https%3A%2F%2Fmyweb.net%2Fmy-account

هذا يعني أن معاملك “7” في sso صحيح

لقد حاولت إعادة توجيه رابط الخاص بي إلى هذا المعامل لإعادة توجيه المستخدم
يمكنك التحقق من حل هذه المشكلة من خلال معاملات الروابط

هذا الرابط في النص “External Login Text” يعمل بشكل صحيح

All-Options-‹-Working24-—-working24-net

هل وجدت حلًا في النهاية؟ لدي نفس المشكلة.

جرب استخدام الحل المذكور هنا: Wordpress SSO Expired nonce - #15 by simon.

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

شكرًا لك، لقد طبقته لكن المشكلة لا تزال قائمة.

@Golaxo هل تستخدم Cloudflare أيضًا؟

إذا كان الأمر كذلك، يرجى محاولة تعطيل Cloudflare بالكامل والتحقق مما إذا كانت المشكلة لا تزال قائمة.

إعجابَين (2)

شكرًا يا صديقي، بعد الكثير من اللعنات، وجدت المشكلة: إضافة Paid Membership Pro تسببت في تعارض. لا يزال عليّ معرفة كيفية تقييد المحتوى على ووردبريس للمستخدمين القادمين من Discourse SSO، لكن على الأقل عرفت الآن مكان المشكلة :slight_smile:

إعجابَين (2)