2016-11-04 4 views
-1

yortusのasync/await node.jsライブラリを使用して、パスワードがハッシュされたPassportベースのログイン/サインアップシステムをbcrypt-nodejsで設定しています。Passportとasync-await Node.jsライブラリで動作するようにbcryptを設定する

システムの残りの部分は、セットアップ、適切に機能している間、私はbcryptのハッシュ関数のシグネチャは、2つのコールバックを必要とし、それがasync/awaitでそれを使用する方法は明らかではないのでyortus' async/awaitとうまく動作するようにbcrypt-nodejsを得るトラブルを抱えています。 ..

hash(data, salt, progress, cb) 
    data - [REQUIRED] - the data to be encrypted. 
    salt - [REQUIRED] - the salt to be used to hash the password. 
    progress - a callback to be called during the hash calculation to signify progress 
    callback - [REQUIRED] - a callback to be fired once the data has been encrypted. 
     error - First parameter to the callback detailing any errors. 
     result - Second parameter to the callback providing the encrypted form. 

async/awaitコール...

let generateHash = async((password) => { 
    let salt = await(bcrypt.genSaltAsync(10)) // this works 
    let result = await(bcrypt.hash(password, salt, null) 
    return result // returns NULL 
}) 

出力:

Unhandled rejection No callback function was given. 

データベース項目(MongoDBの)私はシステムを使用してサインアップしようとすると:

{ 
    "_id" : ObjectId("581bf7031386f167a09851b9"), 
    "username" : "vjk2005", 
    "password" : "" 
} 

ユーザー名が通過しますが、パスワードがNULLです。私は、成功せずに多くの順列と組み合わせを試してきましたが、どんな助けもありがたいです。

答えて

1

というキーワードまたはノード7の--harmony-async-awaitフラグが付いているコードをbabelとして使用することをお勧めします。コードをきれいにすると、そのライブラリを使用する人は非常に少ないと思います。彼らはそのアイデアをとり、それを言語の一部にしました。

このライブラリを使用しても、コールバックを使用するよりもむしろpromisified関数が必要です。 pifyモジュールを使用するか、または有名なbcryptを見つけることができます。常にnpmjs.comまたはnpms.ioで検索してください。 like 'bcrypt promise'のように検索してください。

import {hash} from 'bcrypt-as-promised'; 

const generateHash = async password => await hash(password, 10); 

generateHash('abc1234').then(console.log).catch(console.error); 

それとも、あなたはそれを簡略化することができることなどの塩自動生成することができるので:私は実際にbcryptのlibにをpromisifyするブルーバードを使用してい

import {hash} from 'bcrypt-as-promised'; 

hash('abc123',10).then(console.log).catch(console.error); 
+0

を。私は最後の手段としてハーモニーとバベルを予約します。 – vjk2005

関連する問題