8

現在、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;
    });
});

どちらの方法が優れているのか、その理由を教えてください。ありがとうございました!

4

3 に答える 3

8

はい、可能であれば非同期バージョンを使用して、パスワードハッシュ中にノード処理を拘束しないようにします。あなたが参照する両方のソースコードのケースでは、コードは同期バージョンを使用しています。これは、コードが使用されているメソッドが同期であるため、作成者は同期バージョンを使用するしかありませんでした。

于 2012-07-23T04:11:16.520 に答える
2

同期メソッド内で非同期呼び出しを行うことはできません。パスワードを設定するときに使用する別の方法を作成してみてください。

プルリクエストを送信したので、これを正確に実行する誰かのプロジェクト。ここでそれをチェックしてください:https ://github.com/nickpoorman/CrowdNotes/commit/e268c80a9cacddbc0215bf0e2b7aa31c0a4c785f

于 2012-08-31T23:39:41.970 に答える