• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

토큰 삭제 오류 질문

23.03.15 20:20 작성 조회수 511

0

포스트맨에서 success: true는 뜨는데 막상 DB로 들어가면 토큰이 여전히 남아있습니다.

findOneAndUpdate가 콜백함수를 지원하지 않아 then. catch로 수정해서 사용했는데 혹시 문법적 오류가 있어서 안 되는걸까요?

 

app.get('/api/users/logout', auth, (req, res) => {
    
    User.findOneAndUpdate({ _id: req.user._id }, { token: "" })
       .then(() => {
        console.log(req.user._id);
        res.status(200).send({success: true})
      })
      .catch((err)=>{
        res.json({ success: false, err });
      })
})

이렇게 수정을 했는데 토큰을 지우지 못합니다... 그리고 혹시나 해서

console.log(req.user._id')를해서 id를 읽어올 수 있는지 확인해봤는데 undefined라고 뜨더라고요... 어디서 오류가 나는 걸까요?

답변 1

답변을 작성해보세요.

0

안녕하세요

auth 미들웨어 함수에서 req.user 에 유저정보를 올바르게 넣어주고 있는지 확인해 주세요 ~

감사합니다.

AHYUN님의 프로필

AHYUN

2023.04.05

app.get('/api/users/logout', auth, (req, res) => {
  User.findOneAndUpdate({_id: req.user._id}, {token: ""})
  .then(() => {
    console.log(req.user._id);
    res.status(200).send({ logoutSuccess:true })
  })
  .catch((err)=>{
    return res.json({success:false, err})
  });
})

//-----------------------------------------------------------------

const { User } = require('../models/User');

let auth = (req, res, next) => {
  //인증 처리를 하는곳 
  //클라이언트 쿠키에서 토큰을 가져온다.

  let token = req.cookies.x_auth;
  // 토큰을 복호화 한후  유저를 찾는다.
  User.findByToken(token, (err, user) => {
    if (err) throw err;
    if (!user) return res.json({ isAuth: false, error: true })


    // console.log('userh', user)

    req.token = token;
    req.user = user;
    next();
  })
}



module.exports = { auth };

안녕하세요 위에 분처럼 then, catch로 수정하고 auth 코드를 강사님 코드 가져와 실행해봤지만 계속 req.user._id가 undefined이고 토큰이 안지워지는데 무엇이 문제일까요ㅠㅠ?