Actualmente estoy intentando hacer un módulo de autenticación para mi proyecto en node.js?Función Async o Sync bcrypt para usar en node.js para generar hashes?
ya he visto algunos ejemplos del uso de bcrypt para generar valores hash, es decir
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
Sin embargo, por alguna razón que están utilizando la función bcrypt.hashSync(). Desde bcrypt es bueno porque es mucho tiempo, ¿no sería más prudente utilizar la función asíncrona lugar con el fin de no bloquear el código, es decir:
User.virtual('password')
.get(function() {
return this.hash;
})
.set(function (password) {
bcrypt.hash('password', 10, function(err, hash) {
this.hash = hash;
});
});
¿Me puede explicar qué camino es mejor y por qué? ¡Gracias!
+1, async es definitivamente la opción correcta; Una cosa a tener en cuenta cuando se usa un ODM como Mongoose es que los getters y setters no pueden ser asincrónicos, por lo que algunos autores usarán métodos sincrónicos dentro de ellos. Este es generalmente el movimiento incorrecto; en el pasado, he usado un método personalizado en el modelo como 'setPassword' para hacer el conjunto de contraseñas asíncronas. –
@BrandonTilley puede dar un ejemplo de su método personalizado? –
@lori Oh tío, ha pasado un tiempo desde que publiqué esto, pero algo así parece cercano: https://gist.github.com/BinaryMuse/7983335 –