• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

로그아웃 하고 로그인 할 때 좋아요 기능 실행되는 문제

23.05.09 00:26 작성 조회수 173

0

안녕하세요 제로초님! 게시글 좋아요 부분 듣고 다시 작성해보고 있는데

처음 로딩 시에는 좋아요 버튼 눌렀을 때 로그인 하지 않은 상태면 에러 메시지가 잘 나오는데 ( 로그인 안 하면 좋아요 못 누르게)

첫 번째 문제는 로그인 했다가 로그아웃을 한 뒤에 좋아요 버튼을 누르면 화면에는 변화가 없지만 리덕스에는 LIKE_POST_REQUEST -> LIKE_POST_SUCCESS가 되어서 이전에 로그인했던 사용자의 아이디가 LIKERS에 들어갑니다.

// middlewares.js
exports.isLoggedIn = (req, res, next) => {
    if (req.isAuthenticated()) {
        next();
    } else {
        res.status(401).send('로그인이 필요합니다.');
    }
}

여기 middlewares에 콘솔을 띄어보니 로그인 했다가 로그아웃을 한 상태에서 버튼을 누르면 401에러 부분이 아니라 if ( req.isAuthenticated()) 부분이 실행됩니다.!!

// 에러 메시지 출력부분 PostCard.js

// PostCard.js
 const { removePostLoading, likePostError } = useSelector((state) => state.post);
 useEffect(() => {
    if (likePostError) {
      alert(likePostError);
    }
  }, [likePostError]);

// routes/user.js - 로그아웃 부분

router.post('/logout', isLoggedIn, (req, res, next) => {
    req.logout((err) => {
        if (err) {
            return next(err);
        }
    });
    req.session.destroy();
    res.send('ok');
});

 

답변 1

답변을 작성해보세요.

0

passport 몇 버전 쓰고 계신가요? 0.6버전이면 지금 logout 코드로 하시면 안 됩니다.

kyung3098님의 프로필

kyung3098

질문자

2023.05.09

passport: ^0.4.1 로 되어있습니다 그런데 원래 코드 req.logout()을 고치고 로그아웃하면 똑같이 좋아요 기능이 실행됩니다!!

로그아웃 후에 새로고침하면 다시 로그인되어있나요?? 로그아웃이 확실히 된 게 맞는지 확인해봐야 합니다.

kyung3098님의 프로필

kyung3098

질문자

2023.05.09

아하 새로고침하면 다시 로그인되어 있습니다 그러면 접속할 때 사용자 정보 로딩 액션을 실행하는 useEffect 부분을 수정하면 되나요??

아뇨. 로그아웃이 제대로 안 된 건데요. 로그아웃하는 코드를 다시 확인해보세요.

kyung3098님의 프로필

kyung3098

질문자

2023.05.09

sagas/user에서 로그아웃 부분에서 문제였습니다!! 정말 감사합니다!!