bcrypt 라이브러리 설치하기 전까지 로그인이 잘 되었는데
설치 한 이후로
Failed to serialize user into session 메시지가 뜨면서 로그인이 되지 않습니다.
console 상에서는 serializeUser 코드에 에러가 있다고 하는데, 암호화 이후에 시리얼라이즈가 달라져야 하나요?
비밀번호 암호화해서 회원가입, db저장, db에서 꺼내서 compare 값까지 true로 받은 상태입니다.
//세션만들기 (로그인 상태 유지)
passport.serializeUser(function (user, done) {
done(null, user.id);
});
//이 세션 데이터를 가진 사람을 DB에서 찾아주세요(마이페이지 접속시 발동)
passport.deserializeUser(function (id, done) {
//디비에서 위에 있는 user.id로 유저를 찾은 뒤에 유저 정보를 아래 중괄호에 넣음
db.collection("members").findOne({ id: id }, function (에러, 결과) {
done(null, 결과);
});
});
//로그인 요청
app.post(
"/login",
passport.authenticate("local", {
failureRedirect: "http://localhost:3000/fail",
}),
function (요청, 응답) {
응답.redirect("http://localhost:3000");
}
);
passport.use(
new LocalStrategy(
{
usernameField: "id", //요기는 사용자가 제출한 아이디가 어디 적혔는지
passwordField: "pw", //요기는 사용자가 제출한 비번이 어디 적혔는지
session: true, //요기는 세션을 만들건지
passReqToCallback: false, //요기는 아이디/비번말고 다른 정보검사가 필요한지
},
function (입력한아이디, 입력한비번, done) {
//console.log(입력한아이디, 입력한비번);
db.collection("members").findOne(
{ id: 입력한아이디 },
function (에러, 결과) {
if (결과) {
bcrypt.compare(입력한비번, 결과.pw, function(에러, 결과){
if (결과){
return done(null, 결과)
} else {
return done(null, false, {
message: "Password is not correct"
})
}
})
} else {
return done(null, false, { message: "존재하지않는 아이디요" });
}
}
);
}
)
);