Как мне НЕ СОЗДАТЬ сессию в passportjs?
Приведенный ниже код не работает, потому что я не использовал метод сериализации / десериализации из passportjs(www.passportjs.org/docs). Я не хочу использовать метод сериализации / десериализации из passportjs, который автоматически создает сеанс в памяти моего сервера, потому что я не хочу создавать сеанс.
Как я не могу создать сессию и все еще заставить Google oauth работать?
var express = require("express"),
path = require("path"),
bodyParser = require("body-parser"),
morgan = require("morgan"),
app = express(),
passport = require("passport"),
GoogleStrategy = require("passport-google-oauth").OAuth2Strategy;
app.use(passport.initialize());
app.get("/", function(req, res) {
res.sendFile(__dirname + "/public/main.html");
});
// #1
passport.use(
new GoogleStrategy({
clientID: "4267 .apps.googleusercontent.com",
clientSecret: "34tvd4d32o-",
callbackURL: "http://localhost:3000/auth/google/callback"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
console.log("profile.id: " + profile.id);
return done(null, profile.id); // that is being serialized(added in session). if I use this, i'll need to call serialize/deserialize method
// return done(true);
});
}
)
);
// #1
app.get("/auth/google", passport.authenticate(
"google", {
scope: ["profile", "email"],
session: false
}
));
// #2
app.get("/auth/google/callback",
passport.authenticate("google", {
failureRedirect: "/google_callback_fail",
successRedirect: "/google_callback_success"
})
);
app.get("/google_callback_success", isLoggedIn, function(req, res) {
res.send("google_callback_success \n");
});
function isLoggedIn(req, res, next) {
console.log("isLoggedIn req.user: " + req.user);
if (req.isAuthenticated()) {
console.log("isAuthenticated TRUE");
return next();
}
res.redirect("/notloggedin");
}
app.get("/notloggedin", function(req, res) {
console.log("req.user: " + req.user);
res.json("not loggedin");
});
app.get("/google_callback_fail", function(req, res) {
res.json("the callback after google DID NOT authenticate the user");
});
app.get('/test', function(req, res) {
res.send('test');
});
app.listen(3000);
Произошла следующая ошибка: Ошибка: не удалось сериализовать пользователя в сеанс. Решением этой ошибки является добавление кода ниже. Тем не менее, это создает сеанс. Я не хочу сессию, так как я использую JWT.
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
done(err, user);
});