هذه هي الطريقة التي تثير الخطأ:
def nonce_valid?
if SiteSetting.discourse_connect_csrf_protection
nonce && @secure_session[nonce_key].present?
else
nonce && Discourse.cache.read(nonce_key).present?
end
end
إنها تتحقق من أن الـ nonce تم إنشاؤه بواسطة Discourse لنفس الجلسة التي تعيد توجيه المستخدم مرة أخرى إلى Discourse.
يمكنك محاولة تعيين إعداد الموقع discourse_connect_csrf_protection إلى false. القيمة الافتراضية هي true. إنه إعداد موقع مخفي، لذا لا يمكن تعطيله إلا من وحدة تحكم Rails.
عند تمكين discourse_connect_csrf_protection، يضمن هذا الإعداد أن تتم عملية المصادقة SSO بأكملها من خلال عمليات إعادة توجيه المتصفح. إذا كنت تبدأ عملية المصادقة عن طريق إجراء طلب خلفي إلى session/sso، فستحتاج إلى تعطيله. المزيد من التفاصيل هنا: DiscourseConnect flow no longer functions - #5 by david.