مرحباً بالجميع! لم يتمكن أحد مستخدمي المنتدى لدي من استخدام حسابه لتسجيل الدخول إلى المنتدى من موقعنا الإلكتروني وحصل على هذا الخطأ. لا توجد مشكلة مع حسابات المستخدمين الأخرى ولكن مع حسابه فقط. اعتقدت أنه ربما يمكن حل المشكلة عن طريق تحديث المنتدى إلى أحدث إصدار ولكن المشكلة لا تزال قائمة.
هل لديك أي فكرة؟ أقدر أي مساعدة.
هل هناك أي شيء مميز في إعداد تسجيل الدخول الخاص بك، أو في هذا المستخدم على وجه الخصوص؟ أعتقد أنني رأيت أخطاء مماثلة تتعلق بحسابات المسؤول سابقًا، ولكن كلما زادت المعلومات التي يمكنك تقديمها كان ذلك أفضل. ![]()
هل ترى أي أخطاء في /logs؟
شكرا على ردك!
هل تقصد السجلات في /var/discourse/shared/standalone/log/rails؟
في أي سجل يتم تسجيل مثل هذا الخطأ؟
production.log أو production_errors.log
الثاني فارغ.
كنت أعني السجلات الموجودة في [YourSite]/logs، أو ربما إذا ظهر أي شيء في وحدة تحكم المتصفح عند محاولة تسجيل الدخول؟ قد يكون هناك بعض التفاصيل الإضافية هناك يمكن أن تساعد في تضييق نطاق المشكلة.
هل هم مستخدمون غير موظفين، وهل لديك أي تسجيل دخول موحد (SSO) ممكّن؟
نعم، أعتقد أن جميع المستخدمين يمكنهم تسجيل الدخول باستخدام الدخول الموحد (SSO)، لأنهم لا يحتاجون إلى إدخال الحساب وكلمة المرور مرة أخرى لتسجيل الدخول إلى المنتدى. يتم نقلهم مباشرة من الموقع إلى المنتدى.
هذا خطأ في وحدة التحكم:
وهذا سجل خطأ محتمل في الويب:
ActiveRecord::RecordInvalid (فشل التحقق من الصحة: تم اعتماد البريد الإلكتروني الأساسي بالفعل) app/models/discourse_connect.rb:270:in block in match_email_or_create_user' lib/distributed_mutex.rb:53:in block in synchronize’ lib/distributed
أعتقد أن يبدو أن هذا المستخدم المحدد لديه بريد إلكتروني مختلف على Discourse عما لديه على موقعك الرئيسي. هل يمكنك التحقق من ذلك للتأكيد؟
نعم، لقد تحققت للتو من البريد الإلكتروني المعروض في لوحة مستخدم Discourse والبريد الإلكتروني على موقعنا الرئيسي، وهما متطابقان.
لقد بحثت قليلاً، وأحد الأسباب المحتملة هو أن بريدهم الإلكتروني قد وصل عن طريق الخطأ إلى قائمتك المحظورة. يمكنك البحث ومعرفة ما إذا كان هذا هو الحال في صفحتك /admin/logs/screened_emails. إذا وجدته هناك، فقد يكون إلغاء حظره هو الحل.
(يجدر أيضًا التحقق من عنوان IP الخاص بهم في /admin/logs/screened_ip_addresses أيضًا)
إذا لم يكن هذا هو الحال، فاحتمال آخر هو أن لديهم حساب منتدى قبل تمكين تسجيل الدخول الموحد (SSO). ما هو تسجيل الدخول الموحد (SSO) الذي تستخدمه؟
لقد تحققت من /admin/logs/screened_ip_addresses وهي فارغة.
عذرًا، لا أفهم ما تقصده. (“ما هو نظام الدخول الموحد الذي تستخدمه”) هل هناك أنواع عديدة من الدخول الموحد؟
تساءلت عما إذا كنت قد استخدمت Discourse Connect أو شيئًا آخر، وما الذي قمت بتوصيله لتوفير مصادقة المستخدم الخاصة بك (Wordpress، على سبيل المثال).
لقد رأينا هذا الخطأ من قبل، لقد أجريت بحثًا في نظام التذاكر الخاص بنا.
يحدث هذا عندما يكون لديك:
require activationمضبوط علىtrue- مستخدم U1 على Discourse بعنوان بريد إلكتروني محدد، ربما بمعرف خارجي A.
- مستخدم U2 على جانب مزود DiscourseConnect بنفس عنوان البريد الإلكتروني ومعرف خارجي مختلف (B)
يسجل المستخدم الدخول، ويتحقق Discourse مما إذا كان هناك مستخدم بمعرف خارجي B، فإنه لا يوجد.
عادةً ما يقوم Discourse بإجراء مطابقة على البريد الإلكتروني كخطوة تالية ولكن نظرًا لأن require activation مضبوط، فإن عنوان البريد الإلكتروني غير موثوق به ويتخطى هذه الخطوة ولن يرتبط بالمستخدم U1 لأنه سيسمح بـ اختطاف الحساب.
لذلك يقرر Discourse إنشاء مستخدم جديد. يفشل هذا لأن المستخدم U1 موجود بالفعل بنفس عنوان البريد الإلكتروني.
سيكون من الجيد وجود خطأ أفضل في حالة وجود البريد الإلكتروني ولكن البريد الإلكتروني غير موثوق به. لست متأكدًا أيضًا من سبب ظهوره كخطأ Rails عام.
الحلول:
- إذا كانت عناوين البريد الإلكتروني الخاصة بك على جانب مزود DiscourseConnect موثقة ويمكن الوثوق بها، فاضبط
require activationعلىfalse.
أو - قم بتغيير المعرف الخارجي للمستخدم U1 إلى B
أو - قم بتغيير عنوان البريد الإلكتروني للمستخدم U1 إلى شيء آخر
إضافة النص “تم رفض التغيير الذي طلبته” حتى يتم العثور على هذا الموضوع عندما يبحث شخص ما عن هذا الخطأ.
نعم، نحن نستخدم Discourse connect وهو متصل بموقعنا.
شكراً جزيلاً على ردك المفصل! عناوين البريد الإلكتروني في موقعنا يتم التحقق منها عند تسجيل دخول المستخدم. لذلك سأحاول إصلاح المشكلة بالطريقة الأولى أولاً. ولكن في إعدادات المسؤول لم أجد مكان “طلب تفعيل البريد الإلكتروني”.
إنها معلمة يتم إرجاعها أثناء عملية SSO، راجع Disable email verification for SSO - #4 by simon
بالنسبة للمواقع التي تستخدم إضافة WP Discourse للمصادقة، يمكن لمسؤولي المواقع أيضًا تمييز عناوين البريد الإلكتروني للمستخدمين الفرديين على أنها تم التحقق منها من صفحة تفضيلات المستخدم:
هذا أكثر أمانًا وأسهل من تعطيل التحقق من البريد الإلكتروني لجميع المستخدمين على الموقع.
أتساءل متى بدأ هذا يحدث. أنا متأكد من أن السيناريو الذي تصفه كان يولد سابقًا رسالة الخطأ هذه: “هناك مشكلة في حسابك. يرجى الاتصال بمسؤول الموقع.”
Here هي حالة أخرى لمُدقِّق Rails فاشل يُرجع هذا الخطأ، وهي قديمة منذ 6.5 سنوات. في سياق DiscourseConnect، هذا بالفعل شيء لم نره إلا في الأشهر القليلة الماضية.
هل نستخدم صورة discourse، لذا هل يجب علينا فقط إضافة require_activation=true في env:؟
شكراً لمساعدتك، لكننا لا نستخدم WP. نحن نستخدم صورة Docker الخاصة بـ Discourse. هل الطريقة الصحيحة لتهيئتها هي إضافة require_activation=true في env: من ملف app.yml؟
لا، انظر Login error - #17 by RGJ كما تم نشره من قبل، تحتاج إلى تمرير هذا المعامل على أساس كل مستخدم على حدة. يتطلب هذا تغييره في كود جانب الخادم الخاص بك إذا كان تطبيقًا مخصصًا.


