728x90
로그아웃 기능을 만들기 위해서는 먼저 로그아웃 라우터를 만들고 로그아웃 하려는 유저를 데이터베이스에서 찾아 그 유저의 토큰을 지워줍니다.
토큰을 지워주는 이유는 auth기능에서 인증을 할떄 클라이언트에 있는 토큰을 서버에있는 토큰과 같은지 확인하여 인증을 했었습니다.
만약 토큰이 데이터베이스에 있지 않았다면 클라이언트의 토큰이 맞지않기 때문에 인증이 되지 않았습니다.
로그아웃을 하면서 토큰을 지워주면 인증이 되지않아서 로그인이 풀려버립니다.
app.get('/api/users/logout', auth, (req, res) => {
User.findOneAndUpdate({ _id: req.user._id }, { token: "" }, (err, user) => {
if (err) return res.json({ success: false, err });
return res.status(200).send({
success: true
})
})
})
로그아웃 라우터는 상당히 간단합니다.
User에서 몽고디비의 함수인 findOneAndUpdate을 이용하여 하나의 데이터를 찾아서 업데이트(수정)해줄건데요.
_id가 복호화된 user._id와 일치할 경우 token을 빈값으로 바꾸어줍니다.
즉, 토큰을 삭제해줍니다.
만약 실패했다면 실패의 에러메세지를 리턴하고 성공했다면 success: true라는 메세지를 출력합니다.
728x90
'따라하며 배우는 시리즈 > NodeJS & ReactJS Basic' 카테고리의 다른 글
[ReactJS] CRA to Our Boilerplate(해당 프로젝트에서 디렉터리 구조) (0) | 2022.09.10 |
---|---|
[ReactJS] Create React App(리액트 개발환경 설정) (0) | 2022.09.09 |
[NodeJS] 노드 리액트 기초 - Auth 기능 만들기 (0) | 2022.09.07 |
[NodeJS] 노드 리액트 기초 - bcrypt를 이용한 로그인 기능 만들기 (0) | 2022.09.06 |
[NodeJS] 노드 리액트 기초 - Bcrypt로 비밀번호 암호화 하기 (0) | 2022.09.05 |