Obecnie próbuję utworzyć moduł uwierzytelniania dla mojego projektu w pliku node.js?Asynchronizacja lub funkcja Sync bcrypt do użycia w pliku node.js w celu wygenerowania skrótów?
Już widać kilka przykładów wykorzystania bcrypt do generowania wartości mieszania, to znaczy
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
jednak z jakiegoś powodu są one za pomocą funkcji bcrypt.hashSync(). Od bcrypt jest dobra, ponieważ jest to czasochłonne, nie byłoby rozsądniej korzystać z funkcji asynchronicznej zamiast, aby nie blokować kodu, tj:
User.virtual('password')
.get(function() {
return this.hash;
})
.set(function (password) {
bcrypt.hash('password', 10, function(err, hash) {
this.hash = hash;
});
});
mógłbyś mi wyjaśnić, w jaki sposób jest lepszy i dlaczego? Dziękuję Ci!
+1, async to zdecydowanie właściwy wybór; należy pamiętać o tym, że używanie ODM, takich jak Mongoose, polega na tym, że moduły pobierające i ustawiające nie mogą być asynchroniczne, więc niektórzy autorzy zamiast tego używają w nich metod synchronicznych. Jest to generalnie zły ruch; w przeszłości użyłem niestandardowej metody w modelu, np. 'setPassword', aby ustawić asynchroniczny zestaw haseł. –
@BrandonTilley możesz podać przykład swojej niestandardowej metody? –
@lori Oh człowieku, minęło trochę czasu, odkąd to opublikowałem, ale coś takiego wydaje się bliskie: https://gist.github.com/BinaryMuse/7983335 –