node.js हैश उत्पन्न करने के लिए नोड। जेएस में उपयोग करने के लिए Async या Sync bcrypt फ़ंक्शन?




asynchronous (2)

मैं वर्तमान में node.js में अपने प्रोजेक्ट के लिए प्रमाणीकरण मॉड्यूल बनाने का प्रयास कर रहा हूं?

मैं पहले से ही हैश उत्पन्न करने के लिए bcrypt का उपयोग करने के कुछ उदाहरणों को देखा है, अर्थात्

https://github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js https://github.com/Turbo87/locomotive-passport-boilerplate/blob/master/app/models /account.js

हालांकि, किसी कारण से वे bcrypt.hashSync () फ़ंक्शन का उपयोग कर रहे हैं। चूंकि bcrypt अच्छा है क्योंकि यह समय लेने वाली है, यह कोड को अवरुद्ध न करने के बजाय एसिंक्रोनस फ़ंक्शन का उपयोग करने के लिए बुद्धिमान नहीं होगा, अर्थात:

User.virtual('password')
.get( function () {
    return this.hash;
})
.set( function (password) {
    bcrypt.hash('password', 10, function(err, hash) {
        this.hash = hash;
    });
});

क्या आप कृपया मुझे बताएं कि किस तरह से बेहतर है और क्यों? धन्यवाद!


हां, यदि आप संभव है तो async संस्करण का उपयोग करना चाहते हैं, तो आप पासवर्ड हैश के दौरान अपने नोड प्रसंस्करण को नहीं उठा रहे हैं। दोनों स्रोत कोड मामलों में आप संदर्भ करते हैं, कोड तुल्यकालिक संस्करण का उपयोग कर रहा है क्योंकि जिस पद्धति का उपयोग इसके भीतर किया गया है वह तुल्यकालिक है, इसलिए लेखक को तुल्यकालिक संस्करण का उपयोग करने के लिए कोई विकल्प नहीं था।


आप एक तुल्यकालिक विधि के अंदर एक async कॉल नहीं बना सकते। पासवर्ड सेट करते समय उपयोग करने के लिए एक अलग विधि बनाने की कोशिश करें

मैंने एक पुल के अनुरोध को प्रस्तुत किया है, इसलिए किसी की प्रोजेक्ट जो वास्तव में ऐसा करता है इसे यहां देखें: https://github.com/nickpoorman/CrowdNotes/commit/e268c80a9cacddbc0215bf0e2b7aa31c0a4c785f





bcrypt