리액트 환경에서 로그인 기능을 구현하고 있습니다.
문제는 아이디랑 비번을 DB에 저장된 내용과 다르게 입력해도 로그인 성공이 됩니다.
다른 정보를 입력 후 server 콘솔창을 확인하면 null이라고 뜨는데 post요청을 성공했다는 이유로 계속 로그인성공이라고 뜨는걸까요?
아래 코드 확인해보시고 놓친 부분이 있으면 지적해주시면 감사하겠습니다.

app.post('/login', passport.authenticate('local',
{
failureRedirect: '/fail',
}), function (요청, 응답) {
// console.log(요청)
응답.redirect("/")
});
app.get('/mypage', 로그인했니, function (요청, 응답) {
console.log(요청.user);
응답.send('마이페이지 접속 성공')
})
function 로그인했니(요청, 응답, next) {
if (요청.user) {
next()
}
else {
응답.send('로그인안하셨는데요?')
}
}
// 이하 코드는 '/login'경로로 로그인 요청할 때만 실행되는 검증 코드
passport.use(new LocalStrategy({
usernameField: 'id',
passwordField: 'pw',
session: true,
passReqToCallback: false,
}, function (입력한아이디, 입력한비번, done) {
console.log(입력한아이디, 입력한비번);
db.collection('userinfo').findOne({ id: 입력한아이디 }, function (에러, 결과) {
console.log(결과)
if (에러) return done(에러)
if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
// 이하는 입력한비번과 결과.pw 모두 암호화된 상태에서 비교하는 문법
bcrypt.compare(입력한비번, 결과.pw, function (에러, isMatch) {
if (isMatch) {
return done(null, 결과)
} else {
return done(null, false, { message: '비번틀렸어요' })
}
})
})
}));
// 세션데이터 만들어 저장하는 코드(로그인 성공시 발동, 세션이 있어야 로그인 후 페이지 이용 가능)
passport.serializeUser(function (user, done) {
console.log(user)
done(null, user.id)
});
passport.deserializeUser(function (아이디, done) {
db.collection('userinfo').findOne({ id: 아이디 }, function (에러, 결과) {
done(null, 결과)
})
});