inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

로그인 문제 해결하기

로그아웃시 req logout의 콜백함수 에러가 납니다...

해결된 질문

351

GI P

작성한 질문수 16

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

react redux node.js express next.js

답변 1

0

제로초(조현영)

공지사항 확인하세요 버전 업에 따라 방식이 바뀌었습니다

0

GI P

감사합니다!
req.logout(()=>{

res.send('ok');

})
이런식으로 req.send를 밖이 아니라 req.logout안에 넣어야하는군요 ㅠㅠ

넥스트 버젼 질문

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

148

2

nextjs 15버전 사용 가능할까요?

0

160

1

화면 새로고침 문의

0

122

1

RTK에서 draft, state 차이가 있나요?

0

154

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