인프런 커뮤니티 질문&답변
로그인시 아이디가 없을경우 서버가 터집니다
작성
·
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 에 아예 없으면 팅겨버립니다
왜이러죠
답변
답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!




