강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

hawwokii님의 프로필 이미지
hawwokii

작성한 질문수

로그인시 아이디가 없을경우 서버가 터집니다

작성

·

137

0

assport.serializeUser(function(user, done){
console.log('serializeUser', user);
done(null, user.username);
})

passport.deserializeUser(function(id, done){
  console.log('deserializeUser', id);
  var sql='SELECT * FROM users WHERE username=?';
  conn.query(sql, [id], function(err, results){
    console.log(sql,err,results);
    if(err){
      done('There is no user.');
    } else {
      done(null,results[0]);
    }
  })
})

passport.use(new LocalStrategy(
function (username, password, done) {
  var uname=username;
  var pwd=password;
  var sql='SELECT * FROM users WHERE username=?';
  conn.query(sql, [uname], function(err, results){
    if(err){
      return done('There is no user.');
    }
    var user=results[0];
    return hasher({password:pwd, salt:user.salt}, function(err, pass, salt, hash){
      if(hash===user.password){
        console.log('LocalStrategy', user);
        done(null, user);
      } else{
        done(null,false);
      }
    })
  })
}
))
로그인 post
------------------------------------------------------------------
app.post(
'/auth/login',
passport.authenticate(
  'local',
  {
    successRedirect: '/welcome',
    failureRedirect: '/auth/login',
    failureFlash: false
  }
  )
  );
로그인 get 
------------------------------------------------------------
app.get('/auth/login', function(req, res){
  var output = `
  <h1>Login</h1>
  <form action="/auth/login" method="post">
    <p>
      <input type="text" name="username" placeholder="username">
    </p>
    <p>
      <input type="password" name="password" placeholder="password">
    </p>
    <p>
      <input type="submit">
    </p>
  </form>
  `;
  res.send(output);
});

에러내용
--------------------------------------------------------
TypeError: Cannot read properties of undefined (reading 'salt')
    at Query.<anonymous> (C:\Users\atolo\Desktop\moon\app_session.js:100:44)
    at Query.<anonymous> (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\Connection.js:526:10)
    at Query._callback (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\Connection.js:488:16)
    at Query.Sequence.end (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
    at Query.EofPacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
    at Protocol._parsePacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Protocol.js:38:16)

뭐가 문젠지 감이 안오네요

salt를 정의할수 없다는데

아이디 비밀번호가 맞으면 로그인되고

아이디는 맞고 비번이 틀리면 login 페이지로 다시 돌아가는데

아이디가 mysql 에 아예 없으면 팅겨버립니다

왜이러죠

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
hawwokii님의 프로필 이미지
hawwokii

작성한 질문수

질문하기