يا جماعة أنا بعمل مسار لتسجيل مستخدم جديد (Register) في مشروع Node.js / Express، وعلشان أأمن كلمة السر قبل ما أحفظها في قاعدة البيانات، قمت باستعمال مكتبة bcrypt.
المطلوب:
تشفير الباسورد اللي جاي من الفورم بشكل غير متزامن (Async) وحفظ الـ Hash بتاعه.
المشكلة اللي مقابلاني:
أول ما ببعت طلب التسجيل، السيرفر بيضرب في التيرمنال وبيطلعلي الأيرور ده والعملية بتقف تماماً:
Error: data and salt arguments required
at Object.hash (/app/node_modules/bcrypt/bcrypt.js:126:17)
أنا متأكد إن الباسورد مبعوث صح من الـ Frontend، ومش فاهم ليه المكتبة بتقول إن البيانات أو الـ Salt ناقصين مع إني ممررهم في الدالة!
كود مسار التسجيل في السيرفر:
const express = require('express');
const bcrypt = require('bcrypt');
const app = express();
app.use(express.json());
app.post('/api/register', async (req, res) => {
// السطر المشتبه فيه: احتمال الـ Destructuring يكون فيه مشكلة أو الترتيب
const password = req.body.password;
try {
// السطر اللي بيضرب ويطلع الأيرور
const hashedPassword = await bcrypt.hash(password, 10);
// حفظ في قاعدة البيانات (خطوة افتراضية)
// const newUser = await User.create({ password: hashedPassword });
res.json({ message: "تم التشفير والتسجيل بنجاح!" });
} catch (error) {
console.error(error);
res.status(500).json({ error: error.message });
}
});
app.listen(3000, () => console.log('Server ready on port 3000'));
التعليقات (1)
سجّل دخولك لإضافة تعليق
تسجيل الدخول