9951 explained code solutions for 126 technologies


expressjsHow can I implement authentication using Express.js?


To implement authentication using Express.js, the following steps should be taken:

  1. Install the necessary packages:
npm install express-session passport passport-local
  1. Require the packages in your main Express.js file:
const session = require('express-session');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
  1. Configure the session middleware:
app.use(session({
  secret: 'secret',
  resave: false,
  saveUninitialized: false
}));
  1. Configure the passport middleware:
app.use(passport.initialize());
app.use(passport.session());
  1. Configure the local strategy:
passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));
  1. Serialize and deserialize the user:
passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});
  1. Add authentication routes:
app.post('/login',
  passport.authenticate('local', { successRedirect: '/',
                                   failureRedirect: '/login',
                                   failureFlash: true })
);

For more information, please refer to the Passport.js documentation.

Edit this code on GitHub