How to show custom error messages using passport and express How to show custom error messages using passport and express express express

How to show custom error messages using passport and express


You are not saying what output you want in your front end, but I'm guessing you want to have data to be the message that you set in your LocalStrategy.

Here is one way to do that:

authRouter.post('/signup', function(req, res, next) {  passport.authenticate('local-register', function(err, user, info) {    if (err) { return next(err); }    if (!user) {         res.status(401);        res.end(info.message);        return;    }    createSendToken(req.user, res);  })(req, res, next);});


You can take advantage of passReqToCallback: true in passport.

With this option enabled, req will be passed as the first argument to the verify callback.

Also by taking advantage of flash messages.

Here is basic example of how you use it,

// your strategypassport.use(new LocalStrategy({    passReqToCallback: true  },    (req, username, password, done) => {      User.findOne({ username: username }, (err, user) => {        if (err) done(err)        if (!user) {          console.log('user does not exists')          return done(null, false, req.flash('message', 'User does not exist' ))        } else {          console.log('user exists')          return done(null, user, req.flash('message', 'User exist'))        }      })    }  ))

// your GET loginrouter.get("/login", (req, res) => {  var message = req.flash('message')  res.render("pages/login", { message })})


If you are using passReqToCallback = true then you can send it just like

if (!isMatch) { return done({ message: 'Incorrect password' }); }