It is my first time using passport authentication in nodejs. I am using express to handle the requests. I have encountered passport is only accepting req.query instead of the req.body where req being my request object in my express route. Since I am passing login credentials, I didn't want to use querying approach. This is my passport login handler defined in a separate file called Passport-config.js.
function initPassport(passport){
// DEFINE THE PASSPORT LOCAL STRATEGY
passport.use(new LocalStrategy({
usernameField:"email",
passwordField:"password",
// passReqToCallback:true
},function(email,password,done){
// GET THE USER
const user = AdminHdlr.getUserByEmail(email)
// USER DOESN'T EXIST
if(user==null){
return done(null,false,{"message":"User doesn't exist"})
}
// PASSWORD INCORRECT
if(user.password!=password){
return done(null,false,{"message":"Incorrect password"})
}
// AUTHENTICATED USER
return done(null,true,user)
}))
// SERIALIZE THE USER
passport.serializeUser(function(user,done){
done(null,user)
})
// DESERIALIZE THE USER
passport.deserializeUser(function(user,done){
// const User_fetched = AdminHdlr.getUserByEmail("abenezer")
done(null,user)
})
}
here is my route code segment that only accepts query in a separate file called Admin.js
router.use(passport.initialize())
router.use(passport.session()) // persistent session
// initializing the passport
try {
initializePassport(passport)
} catch (error) {
console.log("Found where the error is")
}
router.post("/login",passport.authenticate('local',
{
successRedirect:'http://localhost:3000/admin/success',
failureRedirect:'http://localhost:3000/admin/something',
}),(req,res)=>{
console.log(req)
})
So how do I accept req.body instead of req.query in passport?