2016-08-18 18 views
2

私のlocal-register私は自分のユーザーデータをデータベースに保存します。パスワードをハッシュするために、私はbcryptの使用:Passport bcryptのパスワードがdbのパスワードと異なる

console.log(password); 
password = bcrypt.hashSync(password); 
console.log(password); 

私はパスワードstackoverflowパスワードをユーザにサインアップする場合は、次のようになります。

私はパスワードを使用して、ユーザー [email protected]にログイン
stackoverflow 
$2a$10$uoJH1Wo9b7SQploRptfODe1Q2kRC3skQoUNOIhAmHg2AWykWQwGvW 

stackoverflow

var hashedpassword = bcrypt.hashSync(password); 
console.log(password); 
console.log(hashedpassword); 

stackoverflow 
$2a$10$aq869JEMWBQ8vCfXfuRvlOPdUvq.UhTz4Ge.kB3n7wSyvhjBsm8r2 

したがって、同じbcryptモジュールを使用しても、ログインするたびにハッシュが異なります。

答えて

3

私はbcryptの内部動作を理解していませんが、ハッシュの一部として塩が生成されるため、毎回同じ文字列に対してハッシュが異なって見える場合があります。このように、あなたが行うことはできません。

stored = hash(old); 
guess = hash(guess); 
valid = stored == guess; 

を代わりにあなたがのように、compare方法を使用する必要があります:CBはのために何

/* password is *not* hashed! */ 
bcrypt.compare(password, usersHashedPassword, cb); 
+0

?折り返し電話? 'cb'が定義されていないというエラーが出ます。 –

+0

@PeterBoomsmaはい - あなたも '.compareSync'を使うことができます –

+0

まあまあ、私はラッパーでラップしてしまったようです。 { console.log( 'true') } else { console.log( 'false') return done(null、false); {if(bcrypt.compareSync(password、current.password)}) } ' –

関連する問題