• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

시리얼 라이저 디시리얼 라이저가 실행되는 시점과 세션에 유저 정보를 저장하는 함수와 조회하는 함수를 알려주세여~!

19.09.27 20:27 작성 조회수 130

0


const passportConfig = require('./passport')
passportConfig();

에 의해 passport 설정이 서버 로직에 추가된뒤

라우팅 로직내에서 req.login 이 실행되면 자동으로 serializeUser가 실행되어

서버 세션에 사용자 정보 저장 [id:2, cookie:"asdfasfs"] 되는게 맞나여?

만약 그렇다면

    passport.serializeUser((user, done)=> {
        return done(null, user.id);
    });

에서

return done(null, user.id); 이 세션에 유저 데이터와 쿠키값을 저장하는 함수인가요?

또 쿠키값으로 유저 정보를 검색해서 req.user에 유저정보를 세팅하는게 passport.deserializeUser가 맞나여

    passport.deserializeUser(async(id, done)=> {
        try {
            const user = await db.User.findOne({
                where: { id },
            })
            return done(null, user);
        } catch (e) {
            console.error(e);
            return done(e);
        }
    });

함수 내용이 id로 유저 정보를 찾은뒤에

            return done(null, user);

을 실행하게 되어 있는데 done 함수가 둘다 다른건가여? 두번째 인자에 user는 user 정보를 어디론가 넘기는거 아닌가여?


req.login이 실행되면 시리얼 라이저 디시리얼라이저가 둘다 실행되는건지

어떤 함수에 의해 유저 데이터가 저장되고

어떤 함수에 의해 쿠키로 유저 데이터를 검색해서 req.user에 유저 정보를 세팅하는건지

알려주시면 감사여

강의를 다시 봐야될것 같긴 한데 어려워여 ㅠ;

그리고 passport /index.js에서 왜 local()을 실행하는지도 잘 몰겠어여

답변 1

답변을 작성해보세요.

1

serializeUser 자체가 저장하는 함수라고 보시면 됩니다. 이 때의 done은 세션에 무엇을 저장할지에 대한 함수고요.

deserializeUser는 req.user를 설정하는 함수고 이 때의 done은 req.user에 무엇을 저장할지에 대한 함수입니다.