Ich habe PassportJS Setup mit Google+ Anmelden.PassportJs isAuthenticated nicht Authentication
Die Google-Authentifizierung scheint gut zu funktionieren, aber wenn ich auf eine Seite umleiten, auf die nur ein authentifizierter Benutzer Zugriff haben sollte. Passport isAuthenticated()
Funktion scheint immer zurück false
Ich habe Leute erwähnen gesehen, dass Sie sollten in der Lage den Benutzer durch die Konsolenprotokollierung zu finden: req.session.passport.user
aber wenn ich log trösten req.session
alles, was ich bekommen ist:
sessionID: 'Q5NaeyfnAphOK633tKjiGnbbex0KJj7e',
session:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true } },
Google Rückruf Route:
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);
});
Hinweis: ich habe eine manuelle req.session.save()
fügte hinzu, dass die Sitzung, um sicherzustellen, wird gespeichert.
Armaturenbrett-Route:
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 });
});
});
Middleware-Modul:
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");
}
};
serialise und De-serialise:
// 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);
});
});
potenzielles Problem:
- Könnte es ein Problem mit passportJS nicht Serialisierung und deserialising richtig sein? Warum? weil ich nie die
console.log
Nachrichten an einem beliebigen Punkt während des Authentifizierungsprozesses ausgeführt sehen.