Saturday, 10 June 2023

Trouble logging out using passport js

I have a sample node app in which I'm trying to sign-up log-in and log-out users using passport js. I can successfully login and signup users, but when I try to logout users in my terminal I only get the console.log of my deserialize function and it doesn't affect cookies in my browser and also won't log out users since I can retrieve req.user after calling logout function. Here's my passport setup, serialize and deserialize function and also my logout function:

app.use(session({
    secret: "secret",
    resave: false,
    saveUninitialized: true,
    cookie: {maxAge:60*60*1000} //1hour
}));

passport.serializeUser((user, cb) => {
    console.log("serializing user");
    cb(null, user.id);
});
passport.deserializeUser((id, cb) => {
    console.log("deserializing");
    User.findById(id).then((err, user) => {
        if(err) throw err;
        const userInformation = {
            username: user.email,
        };
        cb(err, user);
    }).catch((err) => {console.error(err)});
});

app.get("/logout", function(req, res){
    console.log("logging out, user:" + req.user);
    req.logout((err) => {
        console.log("inside logout");
        if(err) {
            console.log("error: " + err);
            res.status(500).json({message:"Error logging out"})
        } else{
            console.log("destorying session in logout");
            req.session.destroy(function (err) {
                if(err) {
                    console.log("error: " + err);
                    res.status(500).json({message: "Error destroying session"});
                } else{
                    res.clearCookie('connect.sid');
                    res.status(200).json({message: "Logged out successfully"});
                }
            });
        }
    });
});

Would appreciate any help with this.



from Trouble logging out using passport js

No comments:

Post a Comment