-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
로그아웃시 req logout의 콜백함수 에러가 납니다...
23.10.31 00:41 작성 조회수 232
1
req.logout을 호출할때 콜백함수가 필요하다 라고 나옵니다.
req#logout requires a callback function
이런식으로요
제 코드는 제로초님 코드처럼 적어놨는데 제가 이해하는 콜백함수라는게 라우터 부분이라고 생각이 드는데 어떻게 수정을 해야할지 감이 안잡힙니다 ㅜㅜ
const express = require('express');
const bcrypt = require('bcrypt');
const passport = require('passport');
const {
isLoggedIn, isNotLoggedIn
} = require('./middlwares')
const { User, Post } = require('../models');
const router = express.Router();
router.post("/login", isNotLoggedIn, (req, res, next) => {
passport.authenticate("local", (err, user, info) => {
if (err) { // 서버에러 부분
console.error(err)
return next(err)
}
if(info){// 클라이언트 에러 부분
return res.status(401).send(info.reason)
}
// 성공시
return req.login(user,async(loginErr)=>{
// 패스포트 에러날시
if(loginErr){
console.error(loginErr)
return next(loginErr)
}
// 유저의 모든 정보
const fullUserWithoutPassword = await User.findOne({
where:{id:user.id},
// 비밀번호 제외
// 받고 싶은 정보만 적을경우
// attributes:["id","nickname","email"],
attributes: {
exclude:["password"]
},
// 나머지 정보
include:[{
model:Post
}, {
model: User,
as: "Followings",
}, {
model: User,
as: "Followers",
}]
})
// post 팔로워 팔로잉 정보 비밀번호 제거
return res.status(200).json(fullUserWithoutPassword)
})
})(req,res,next)
})
router.post("/", isNotLoggedIn, async (req, res, next) => {
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, 12)
await User.create({
email:req.body.email,
nickname: req.body.nickname,
password: hashedPassword,
})
// res.setHeader("Access-Control-Allow-Origin","http://localhost:3000")
res.status(201).send("회원가입이 완료되셨습니다.") // 201은 생성이 잘됫다.
} catch (error) {
console.error(error)
next(error)// 에러가 난거를 브라우저에 알려준다. statsus:500
}
})
router.post('/logout', (req, res) => {
req.logout();
req.session.destroy();
res.send('ok');
});
module.exports = router
답변을 작성해보세요.
답변 1