나는 을 가지고 있습니다. PassportJS가 으로 설정되었습니다. Google+ 로그인.PassportJs isAuthenticated not authenticating
Google 인증은 정상적으로 작동하지만 인증 된 사용자 만 액세스 할 수있는 페이지로 리디렉션 할 때 표시됩니다. 여권의 isAuthenticated()
함수는 항상 나는 사람들이 당신이 콘솔 로깅하여 사용자 찾을 수 있어야 언급 본 적이 false
반환하는 것 같다 req.session.passport.user
를하지만 콘솔 때 얻을 모두가 req.session
로그 :
sessionID: 'Q5NaeyfnAphOK633tKjiGnbbex0KJj7e',
session:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true } },
구글 콜백을 제공
router.get("/google/callback", function(req, res, next) {
passport.authenticate("google", function(err, user, info) {
req.session.save(()=>{
res.redirect("/api/v1/dashboard");
console.log("after Passport AUTH");
});
})(req, res, next);
});
참고 : 나는 세션 수 있도록 수동 req.session.save()
를 추가했습니다 구원 중입니다.
대시 보드 경로 :
router.get("/", middleware.isLoggedIn , function(req, res) {
console.log("Request: Get All Dashboard Data!");
models.PortfolioBalance.findAll({ raw: true }).then(function(
portfolioBalance
) {
res.render("dashboard/index", { portfoliobalances: portfolioBalance });
});
});
미들웨어 모듈 :
module.exports = {
isLoggedIn: function(req, res, next) {
console.log("===========================================");
console.log("isAuthenticated: ", req.isAuthenticated);
console.log("===========================================");
if (req.isAuthenticated()) {
return next();
}
console.log("not authenticated");
res.redirect("/login");
}
};
직렬화 및 역 직렬화를 :
// used to serialize the user for the session
passport.serializeUser(function(user, done) {
console.log("SerializeUser:", models.User.userId);
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
console.log("deserializeUser:", models.User.userId);
models.User.findOne({ where: { userId: id } }).then(function(
err,
user
) {
done(err, user);
});
});
잠재적 인 문제 :
- 그것이 passportJS가 serialising 제대로 deserialising하지에 문제가 될 수 있을까? 왜? 왜냐하면 나는 인증 과정에서 어느 시점에서든
console.log
메시지가 실행되는 것을 보지 못하기 때문이다.