سؤال

أنا أستخدم مكتبة Nodejs scrypt لتجزئة كلمات المرور الخاصة بي.

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  console.log(res);
  //scrypt.verify(res, "incorrect password");
});

الذي يعمل على أكمل وجه.لكن المشكلة هي عندما أقوم بإلغاء تعليق السطر للتحقق من التجزئة (لقد وضعته في نفس الوظيفة (وبشكل متزامن) فقط من أجل البساطة)

يتعطل البرنامج النصي دون أي أخطاء!هذا ما أحصل عليه في وحدة التحكم

/Users/foo/Documents/nodejs/wow/models/user.js:44
    scrypt.verify(res, "incorrect password");
           ^
[object Object]
31 Jul 10:26:52 - [nodemon] app crashed - waiting for file changes before starting...

كما يبدو أنه يحاول وضع نوع من الكائنات، وهذا هو [object Object].أنا لا أقوم بتسجيل الدخول، لأنني لا أحصل على أي شيء في وحدة التحكم قبل إلغاء التعليق على هذا السطر.

اي احد لديه نفس المشكلة؟شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

المشكلة هي أنك تستخدم الخطأ ترميز المفتاح ل scrypt.verify().بشكل افتراضي، فإنه يتوقع وجود مخزن مؤقت، ولكنك تقوم بتوفير سلسلة.إما تغيير "incorrect password" أن تكون مخزنًا مؤقتًا أو قم بذلك:

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  scrypt.verify.config.keyEncoding = "utf8";
  scrypt.verify(res, "incorrect password");
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top