إذا حافظت على جلستك، فلن تواجه أي مشكلة على الإطلاق. ولكن إذا حاولت تسجيل الدخول الآن، عند النقر على “تسجيل الدخول”، يتغير الرابط إلى: /auth/failure?message=csrf_detected ونحصل على رسالة الخطأ: انتهت مهلة التفويض، أو أنك قمت بتغيير المتصفح. يرجى المحاولة مرة أخرى..
هل يعرف أحد ما إذا كان هناك تغيير حديث قد يؤدي إلى هذه الحالة؟
سؤال جانبي: هل توجد طريقة للعودة إلى إصدار سابق؟ لقد بحثت حول هذا الأمر، والإجماع هو تعطيل الإضافات (أو الإضافة المحددة المسؤولة عن المشكلة). ومع ذلك، لا يمكنني تعطيل هذه الإضافة لأنها الطريقة التي يدخل بها مستخدمو المنصة إليها
ليس مدعومًا رسميًا، ولكن إذا كان لديك نسخة احتياطية، يمكنك حذف مجلد بيانات postgres، وإضافة إصدار الالتزام في سطر الإصدار في app.yml، وإعادة البناء، ثم استعادة النسخة الاحتياطية.
تحديث سريع: حاولت استخدام النسخة الاحتياطية مع لقطة للآلة كما كانت في تلك اللحظة (قبل الترقية). عند النقر على “تسجيل الدخول”، يتم إعادة تحميل الصفحة الرئيسية مرتين. حاولت إعادة البناء باستخدام معرف commit المحدد الذي كان لدي آنذاك، لكن لم ينجح الأمر، حدث خطأ في Rake لقاعدة البيانات.
كنت أبحث عن تقارير أخرى حول مشكلة LDAP، ولا يبدو أن هناك أيًا منها. هل يمكن أن يكون هذا ناتجًا عن مصدر خارجي؟
تم حل المشكلة، وتم العثور على السبب الجذري، وهو لا علاقة له بـ Discourse (آسفون يا أصدقاء!). كانت المشكلة أن الشهادة تم تحديثها وتقديمها عبر HAP، بينما لم نكن نستخدم HAP من قبل، وكان Discourse يقدمها بنفسه. لقد نسينا هذا التفصيل، مما أدى إلى ظهور خطأ CORS.
الدروس المستفادة:
التراجع عن تحديث Discourse ليس خيارًا عمليًا؛ الأفضل هو وجود نسخة احتياطية من الجهاز بالكامل (وهو ما كان متوفرًا، والحمد لله).
لم أتمكن بعد من معرفة سبب صعوبة إعادة البناء باستخدام SHA محدد وفقًا للتعليمات التي قرأتها هنا، حيث لم أتمكن من القيام بذلك.
من الأفضل دائمًا تقديم الشهادات عبر HAP، لكن لا تنسَ ذلك. (كملاحظة لأي شخص آخر، من الضروري إضافة العلم 'set-header X-Forwarded-Proto https' لأن Discourse يحتوي على NGINX خاص به، وهنا كان الفشل يحدث).
حقيقة أن لا أحد أبلغ عن نفس المشكلة (حتى مع اعتبار هذه حالة خاصة لأن الإضافة غير رسمية) أشارت إلى هذا الاتجاه (المجتمع كما هو مُصمم :P).
ظهرت المشكلة متأخرة (إلى الحد الذي نسينا فيه تغيير الشهادة) بسبب إعادة البناء التي تم تشغيلها بواسطة التحديث، وهو المكان الذي فشل فيه الأمر.