2012-07-23 8 views
7

現在、私のプロジェクトの認証モジュールをnode.jsに作成しようとしていますか?ハッシュを生成するためにnode.jsで使用するAsyncまたはSync 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; 
    }); 
}); 

あなたはどの方法が良いとする理由である私に説明してくださいでした:それは時間がかかりますので、bcryptのは良いですので、すなわち、代わりにコードをブロックしないようにするために、非同期機能を使用することが賢明ではないでしょうか?ありがとうございました!

答えて

7

可能であれば、非同期バージョンを使用して、パスワードハッシュ中にノード処理を縛らないようにしたいと考えています。両方のソースコードの場合、コードは同期バージョンを使用しています。これは、使用されているメソッドが同期的であるため、作成者が同期バージョンを使用するしかないからです。

+3

+1、asyncは間違いなく正しい選択です。 MongooseのようなODMを使うときは、getterとsetterを非同期にすることができないということを覚えておいてください。そのため、いくつかの作者は代わりに同期メソッドを使用します。これは一般に間違った動きです。以前は 'setPassword'のようなモデル上でカスタムメソッドを使って非同期パスワードを設定しました。 –

+0

@BrandonTilleyはカスタムメソッドの例を挙げることができますか? –

+2

@loriああ、これを投稿してからしばらくしていますが、このようなものは近いと思います。https://gist.github.com/BinaryMuse/7983335 –

関連する問題