로그인 실패 에러 (500 Internal Server Error)
회원가입 시 MySQL 테이블에 이메일, 비밀번호 저장되는 것을 확인하고 로그인을 시도했는데 계속 실패해서 질문드립니다
MySQL 워크벤치로 확인한 user 테이블을 보면 회원가입은 잘 되었는데 id: 2 의 메일, 비밀번호로 로그인이 안 됩니다
console.log로 확인해보니까 패스포트 로그인 시도에서 에러가 나는 것 같기는 한데 정확한 원인을 못 찾겠습니다..
터미널에 뜨는 메시지입니다

개발자도구_네트워크 화면입니다


개발자도구_콘솔 화면입니다

의심스러운 코드입니다!
routes/user.js 코드
const express = require('express');
const bcrypt = require('bcrypt');
const passport = require('passport');
const { User } = require('../models');
const router = express.Router();
router.post('/login', (req, res, next) => {
passport.authenticate('local', (err, user, info) => {
if (err) { //서버쪽 에러
console.error(err);
console.log('routes/user_server err')
return next(err);
}
if (info) { //클라이언트쪽 에러
return res.status(401).send(info.reason);
}
return req.login(user, async (loginErr) => {
if (loginErr) { //패스포트 로그인 에러
console.error(loginErr);
console.log('routes/user_loginErr')
return next(loginErr);
}
// res.setHeader('Cookie', 'cxlhy..랜덤토큰')
return res.status(200).json(user);
});
})(req, res, next);
});
router.post('/', async (req, res, next) => { // POST /user
try {
const exUser = await User.findOne({
where: {
email: req.body.email,
}
});
if (exUser) {
return res.status(403).send('이미 가입된 메일입니다.');
}
const hashedPassword = await bcrypt.hash(req.body.password, 10); //10~13
await User.create({
email: req.body.email,
nickname: req.body.nickname,
password: hashedPassword,
});
res.status(201).send('OK');
} catch (error) {
console.error(error);
next(error); //next로 에러 처리 (한방에), status 500
}
});
module.exports = router;
app.js 코드
const express = require('express');
const cors = require('cors');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const passport = require('passport');
const dotenv = require('dotenv');
const postRouter = require('./routes/post');
const userRouter = require('./routes/user');
const db = require('./models');
const passportConfig = require('./passport');
dotenv.config();
const app = express();
db.sequelize.sync()
.then(() => {
console.log('db 연결 성공');
})
.catch(console.error);
passportConfig();
app.use(cors({
origin: 'http://localhost:3000',
credentials: false,
}));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
}));
app.use(passport.initialize());
app.use(passport.session());
~이하생략~
passport/index.js 코드
const passport = require('passport');
const local = require('./local');
const { User } = require('../models');
module.exports = () => {
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
try {
const user = await User.findOne({ where: { id } });
done(null, user); //req.user
} catch (error) {
console.error(error);
done(error);
}
});
local();
};
passport/local.js 코드
const passport = require('passport');
const { Strategy: LocalStrategy } = require('passport-local');
const bcrypt = require('bcrypt');
const { User } = require('../models');
module.exports = () => {
passport.use(new LocalStrategy({
usernameField: 'email', //id칸
passwordField: 'password', //비밀번호칸
}, async (email, password, done) => { //done으로 결과 판단
try {
const user = await User.findOne({ //가입된 이메일이 있는지 검사
where: { email }
});
if (!user) {
return done(null, false, { reason: '존재하지 않는 이메일입니다.' });
}
const result = await bcrypt.compare(password, user.password)
if (result) {
return done(null, user);
}
return done(null, false, { reason: '비밀번호가 일치하지 않습니다.' });
} catch (error) {
console.error(error);
return done(error);
}
}));
};
답변 1
0
오, req.login에서 에러나는 분은 제 강의 역사상 처음이십니다. 터미널에 2라고 찍히는데 저기가 어딘지 찾아보세요. serializeUser에서 user도 console.log 찍어보세요.
0
2는 user테이블의 id같은데 왜 나온건지 모르겠습니다..
serializeUser에서 console.log(user); 입력하고 다시 로그인하니까 터미널에 이렇게 떴습니다!

0
console.log('id', user.id) 하면 id 2가 제대로 뜨는거죠? 이 값이 done(null, user.id)로 들어가면 req.login에서는 성공 처리가 되어야 하는데 희한하네요.
0
갑자기 딱히 건드린 게 없는데 똑같은 이메일 비번으로 로그인했을 때 log_in_success가 뜨고
다른 에러가 발생하는데 왜 그런걸까요?? 수정한 게 없고 다음날 똑같이 다시 실행한것뿐인데 결과가 달라서 당황스럽습니다 ㅠㅠ
원래 log_in_failure가 떴었는데 지금은 log_in_success가 뜹니다..
넥스트 버젼 질문
0
78
2
로그인시 401 Unauthorized 오류가 뜹니다
0
90
1
무한 스크롤 중 스크롤 튐 현상
0
176
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
96
2
인라인 스타일 리렌더링 관련
0
92
2
vsc 에서 npm init 설치시 오류
0
147
2
nextjs 15버전 사용 가능할까요?
0
160
1
화면 새로고침 문의
0
122
1
RTK에서 draft, state 차이가 있나요?
0
153
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
349
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
375
1
sudo certbot --nginx 에러
0
1279
2
Minified React error 콘솔에러 (hydrate)
0
470
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
247
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
329
1
npm run build 에러
0
519
1
front 서버 npm run build 중에 발생한 에러들
0
382
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
338
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
289
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
240
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
202
1





