2017-12-13 24 views
1

BCryptを使用してパスワードを暗号化し、それを別の関数に渡してDBに格納したいとします。問題は私がそれを成功裏に渡すことができないということです。書き込みツーdb.js上:「にReferenceError:hashedPassが定義されていない」:私はエラーが表示されるコードのこの部分は、暗号化とハッシュを送信するために持っている18BCryptハッシュを別の関数に渡す

に「write.registerUser()」

書き込みに-db.js私はDBに保存しようが、失敗である

\t \t bcrypt.genSalt(saltRounds, function(err, salt){ 
 
\t \t \t bcrypt.hash(query.password, salt, function(err, hashedPass){ 
 
\t \t \t \t console.log(hashedPass); //I get the hash printed here with no problems 
 
\t \t \t \t write.registerUser(function(data, fName, lName, email, role, date, hashedPass){ 
 
\t \t \t \t \t return(); 
 
\t \t \t \t }); 
 
\t \t \t }); 
 
\t \t });

\t registerUser(Callback) { 
 
\t \t var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+fName+"', '"+lName+"', '"+email+"', '"+role+"', '"+date+"', '"+1+"', '"+hashedPass+"')"; 
 
\t \t con.query(sql, function (err, result) { 
 
\t \t \t if (err) throw err; 
 
\t \t \t Callback(result); 
 
\t \t }); 
 
\t }

+1

'registerUser(コールバック){' ---この関数宣言には、単一の 'Callback'引数しかありません。だから、 'hashedPass'はそこでは完全に定義されていません。 – zerkms

+1

registerUser関数の 'first_name、last-name'などはどこにありますか?それらは、ハッシュ関数から渡されたパラメータと一致しません。もし彼らがそうであれば、それらは定義されていますか? – Tyler

+1

'next()' 'を使う方法 – shahabvshahabi

答えて

1

変更あなたのregisterUserのに機能:

registerUser(params, callback) { 
    var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+params.fName+"', '"+params.lName+"', '"+params.email+"', '"+params.role+"', '"+params.date+"', '"+1+"', '"+params.hashedPass+"')"; 
    con.query(sql, function (err, result) { 
     if (err) throw err; 
     callback(result); 
    }); 
} 

とにあなたのハッシュ生成コードを変更します。

bcrypt.genSalt(saltRounds, function(err, salt){ 
     bcrypt.hash(query.password, salt, function(err, hashedPass){ 
      console.log(hashedPass); //I get the hash printed here with no problems 
      write.registerUser({ 
       data, 
       fName, 
       lName, 
       email, 
       role, 
       date, 
       hashedPass 
      }, function(results){ 
       console.log(results) 
       return(); 
      }); 
     }); 
    }); 

警告:このSQLクエリはSQLインジェクションの脆弱性です。準備されたステートメントやORMを使用することをお勧めします。

+1

ありがとう! @Porluneによって提供された修正が機能しました。 そして、私は脆弱性を注射に固定することを確かめます。 –

関連する問題