لقد قمت بنقل كمية كبيرة من المحتوى من bbPress إلى تثبيت discourse الخاص بي. أستطيع رؤية جميع المنشورات والمستخدمين وما إلى ذلك. لكن مستخدميني لا يستطيعون تسجيل الدخول باستخدام بيانات “كلمة المرور القديمة” من موقعي على WP. لقد قمت بتثبيت الإضافة، وهي مدرجة في قسم الإضافات الخاص بمسؤولي. لقد قمت بتحديد جميع الخيارات المتاحة.
ومع ذلك: لا يمكن لأي شخص تسجيل الدخول!
كما أنني لا أعرف أين يجب تطبيق الكود المعطى من ملف readme الخاص بالإضافة:
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save
أيضاً، لا أعرف بالضبط ما المقصود بـ “تجزئات كلمات المرور البديلة” المذكورة في ملف readme.
@michaeld هل يمكنك تقديم المزيد من التوجيه حول كيفية استخدام الإضافة؟
يا إلهي، بعد إجراء المزيد من الاختبارات، اتضح أنها كانت تعمل بالفعل. كانت المشكلة في تغيير كلمة المرور أثناء اختياري لها آسف! شكرًا لك على الإضافة الرائعة! لقد سهّلت حياتي كثيرًا!
مرحبًا، أعاني من مشكلة في جعل هذا يعمل. لقد أنشأت حقلًا مخصصًا باسم import_pass وقمت بتثبيت الإضافة. قمت بتشغيل سكريبت الاستيراد مرة أخرى على قاعدة بيانات SMF الخاصة بي، لكن دون جدوى؛ فلا يمكن لأي شخص تسجيل الدخول بعد ذلك. في الحقل المخصص، أرى فقط علامة “-” بدلاً من قيمة التجزئة (hash).
وكما أشار مستخدمون آخرون من قبل، لست متأكدًا مما يجب فعله بهذا الكود:
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save
أقدر أي توجيه. هل يُفترض أن يُوضع هذا الكود في ملف سكريبت الاستيراد smf2.rb أم ماذا؟
شكرًا. هذا رائع. إذن تقصد أنه إذا قمت بإزالة الحقل المخصص الذي تم إنشاؤه يدويًا وأبقيت الإضافة مفعلة فقط، فستعمل تلقائيًا وتستخلص تجزئات كلمات المرور عند الحاجة.
هل هناك سجل يمكننا التحقق منه لمعرفة سبب عدم قيام الإضافة بما هو مفترض؟
تقوم الإضافة بتفسير واستخدام الحقول المخصصة التي تم تعيينها بواسطة أداة الاستيراد. إذا كانت الحقول المخصصة فارغة أو غير موجودة، فإن المشكلة ليست في الإضافة، بل في أداة الاستيراد.
هل جرب أحدكم استخدام تجزئات كلمات المرور من Auth0؟
لا يمكنني إجراء الاختبار مباشرةً لأن تصدير تجزئات كلمات المرور لديهم خدمة مدفوعة للعملاء. أردت فقط معرفة ما إذا كان أي شخص قد جرب ذلك قبل أن أبدأ في اتخاذ هذا المسار.
يبدو أن كلمات المرور لديهم مُجزأة باستخدام bcrypt مع 10 دورات تمليح.
قمنا بنقل منتدى إلى Discourse قبل عدة سنوات باستخدام إضافة migratepassword. هل توجد طريقة للتحقق من عدد المستخدمين الذين لا يزالون يستخدمون تجزئات كلمات المرور القديمة من المنتدى السابق؟
من الناحية التقنية، لا يكون المستخدم “مستخدمًا” لتجزئة كلمة المرور القديمة.
عندما يسجل المستخدم دخوله لأول مرة بعد عملية الترحيل، ولا تطابق كلمة المرور التي أدخلها كلمة مرور Discourse (التي ستكون سلسلة عشوائية من الأحرف في البداية)، تقوم الإضافة بعملها.
تتحقق مما إذا كانت كلمة المرور المدخلة تطابق حقل import_pass المخصص باستخدام جميع طرق التجزئة التي تعرفها.
إذا وجدت تطابقًا، فإنها تحفظ كلمة المرور للمستخدم ثم تزيل حقل import_pass المخصص.
لذلك، بعد بضع سنوات، سيبقى حقل import_pass المخصص فقط لدى المستخدمين الذين لم “يستخدموا” كلمة المرور المرحَّلة لتسجيل الدخول.
أ) لم يسجلوا دخولهم أبدًا (يمكنك التحقق من ذلك عبر تاريخ آخر مشاهدة).
ب) لم يستخدموا كلمة المرور المرحَّلة، بل سجلوا الدخول عبر البريد الإلكتروني، أو طريقة مصادقة مختلفة، أو قاموا بإعادة تعيين كلمة المرور الخاصة بهم.
أدركت للتو أن الحالة (ب) قد تثير مشكلة أمنية. إذا لم يتذكر المستخدم كلمة مروره وقام بتغييرها، أو إذا استخدم طريقة مصادقة أخرى، فستظل تجزئة كلمة المرور المرحَّلة موجودة ويمكن استخدامها بجانب كلمة المرور الجديدة. لقد قمت للتو بدفع تحديث للإضافة بحيث يتم مسح حقل import_pass المخصص في كل تسجيل دخول ناجح.
لذلك، بدءًا من الآن، سيكون حقل import_pass المخصص موجودًا فقط لدى المستخدمين الذين لم يسجلوا دخولهم أبدًا.