• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

deserializeUser에대해서...

19.07.29 09:28 작성 조회수 96

0

로그인 성공시, 

app.use(passport.initialize());

app.use(passport.session());

이거를 통해서, passport/index.js 에서의 

passport.deserializeUser((id, done) => {
User.find({ where: { id } })
.then(user => done(null, user))
.catch(err => done(err));
});

이게 작동하잖아요. 

 

serializeUser를 통해서 id를 세션에 저장을 해두었다고 하셨는데, passport.deserializeUser((id, done)  여기서, id 와 done 의 인자를 갖고있는 콜백함수인데,id와 done은 누가 입력을 해주는건가요...? 

 

id 와 done이 잘 입력되서,  .then(user => done(null, user)) 

done(null,user) 가 콜백으로 리턴되는거같은데, 이거는 도대체 어디에 리턴이 되는건가요...?

 

지금 user => done(null, user)    에게 콜백함수 맞죠?

(변수) => 리턴 이 함수 형태맞죠?

 

디시리얼라이즈 이후로, req.user에 저장이되는건가요?

시리얼라이즈 이후로 req.user에 저장이 되는게 아니였나요/? 

헷갈리네요....

router.get('/', (req, res, next) => {
res.render('main', { // main.pug 렌더링
title: 'NodeBird', // main.pug에 있는 변수들
twits: [],
user: req.user, // 즉 done에서 성공시 in localStoragy 세션에 저장이됨 그러고 나서 로그인후 req.user로 접근가능.
loginError: req.flash('loginError'), //일회성 메세지들 보여주기위해 에러 넣음
});
});

 

 

 

 

 

 

 

답변 2

·

답변을 작성해보세요.

0

디시리얼라이즈랑 시리얼라이즈를 반대로 생각하고 계십니다.

0

이건 제 강좌 영상에 자세히 설명되어있습니다. 영상을 다시 한 번 더 보시고 다시 질문주세요.