passport icon indicating copy to clipboard operation
passport copied to clipboard

local strategy deserializeUser not be used

Open zilin-zhou opened this issue 1 year ago • 0 comments

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
        }
    })
);

image

please help me!

zilin-zhou avatar Aug 23 '23 04:08 zilin-zhou