2017-12-13 10 views
1

BCrypt를 사용하여 암호를 암호화 한 다음 다른 함수에 전달하여 DB에 저장하려고합니다. 문제는 성공할 수 없다는 것입니다. 쓰기 - 투 - db.js에 "ReferenceError가 : hashedPass 정의되지 않은"나는 오류가 발생 코드의이 부분은 암호화 해시를 보낼 수있다 (18)다른 함수에 BCrypt 해시 전달

에 "write.registerUser()"

\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 }
: 쓰기에-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 });

아이디어가 있으십니까?

+1

'registerUser (Callback) {'---이 함수 선언은 단지 하나의'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이 제공 한 수정 사항이 적용되었습니다. 그리고 나는 취약성을 주사에 맞출 것이라고 확신합니다. –