2017-12-27 5 views
0

PassportJS Google OAuth 전략에서 일부 이상한 이유로 사용자 ID를 직렬화하여 브라우저로 보내 쿠키를 보내면 ID를 반환하지 않고 역 직렬화합니다. 당신은 몽구스를 사용하는 경우passportjs google oauth2 strategy

app.use(cookieSession({ 
    maxAge: 24 * 60 * 60 * 1000, 
    keys: 'dkfehfhgddf' 
})); 
+0

당신이 MongoDB를에서 사용자 데이터를 가져 몽구스를 사용하고 있습니까 : 여기

는 그것이 작동하는 방법이다? –

+0

예. 설명해 주셔서 감사합니다. mongodb –

답변

0

아래에, 당신은 당신의 코드에서 실수를 한 내가 console.log 사용자가 세부 사항으로 이동하려면 undefined,

passport.deserializeUser((id, done) => { 
    User.findById(id).then((user, done) => { 
     console.log(user); 
     done(null, user); 
    }); 
}); 

을 반환 할 때 때문에 내 쿠키가됩니다 예기치 않은 동작이 발생합니다.

약속 버전의 findById() 기능을 사용하려는 경우 나중에 .exec()으로 전화하여 조치를 보내야합니다. 또한 deserializeUserdone 콜백이 숨겨져 호출되지 않습니다.

passport.deserializeUser((id, done) => { 
    User.findById(id).exec() 
    .then(user => { 
     if (user) {// user may be null 
     done(null, user); 
     } else { 
     done(new Error("User not found"), null); 
     } 
    }) 
    .catch(error => { 
    done(error, false); 
    }); 
}); 
+0

감사합니다. 글쎄 그것은 내가 console.log id가 mongo에 반환했을 때 브라우저에서 아무것도 반환하지 않는다. 따라서 db는 쿼리하기 위해 id를받지 못합니다. –