passport
passport copied to clipboard
local strategy deserializeUser not be used
After using the https protocol, the local passport cannot be used, but the google and twitter strategies can be used. The local strategy does not run this function deserializeUser. In the callback function of the local strategy, req.session has passport information, but it does not exist after the jump There is no pasport information in the session
my code:
passport.serializeUser((user, done) => {
console.log("========serializeUser========\n", user)
done(null, user);
});
passport.deserializeUser((user, done) => {
console.log("========deserializeUser========\n", user)
done(null, user)
});
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password'
},
async function (email, password, done) {
........//database process
} else {
return done(null, false, { message: 'Incorrect username and password' })
}
}
));
module.exports = passport
my route
router.post("/login_email", passport.authenticate("local", {
failureRedirect: "/login",
failureMessage: true
}),
(req, res) => {
console.log("========session========\n", req.session)
res.redirect("/auth/user")
}
);
** This function deserializeUser is not called **
const session = require("express-session");
const bodyParser = require("body-parser");
const config = require('./config')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
app.use(require('cookie-parser')());
app.use(
session({
secret: config.jwtSecretKey,
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
sameSite: "none",
maxAge: 24 * 60 * 60 * 1000 * 7
}
})
);
please help me!