nodejs authentication code example

Example 1: nodejs authentication token

Setting up our development environment and initializing our express server.
Creating our first basic route and controller.
Fleshing out our routes and controllers to add users and login users.
Creating a route and controller that will handle getting all users.

Example 2: passport js

var GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(new GoogleStrategy({
    clientID: GOOGLE_CLIENT_ID,
    clientSecret: GOOGLE_CLIENT_SECRET,
    callbackURL: "http://www.example.com/auth/google/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
    User.findOrCreate({ googleId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));

Example 3: express passport js

// my github https://github.com/restuwahyu13
const { AuthSchema } = require('../models/model.auth')
const passport = require('passport')
const JwtStrategy = require('passport-jwt').Strategy
const ExtractJwt = require('passport-jwt').ExtractJwt
const LocalStrategy = require('passport-local').Strategy

exports.passportSerialize = () => {
  return passport.serializeUser(async (user, done) => {
    if (user) {
      const { _id } = user
      const result = await AuthSchema.findById(_id).lean()
      if (!result) return done(null, false)
      return done(null, result._id)
    }
    return done(null, false)
  })
}

exports.passportDeserialize = () => {
  return passport.deserializeUser(async (id, done) => {
    if (id) {
      const user = await AuthSchema.findById(id).lean()
      if (!user) return done(null, false)
      return done(null, user)
    }
    return done(null, false)
  })
}

// passport local
exports.passportLocalStrategy = () => {
  passport.use(
    'local',
    new LocalStrategy(async (username, password, done) => {
      if (username && password) {
        const user = await AuthSchema.find({ $or: [{ username }, { email: username }] }).lean()
        const verify = AuthSchema.verifyPassword(password, user[0].password)

        if (!verify) return done(null, false)
        return done(null, user[0])
      }
      return done(null, false)
    })
  )
}

// passport jwt
exports.passportJwtStrategy = () => {
  passport.use(
    'jwt',
    new JwtStrategy(
      {
        secretOrKey: process.env.JWT_SECRET,
        jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
      },
      async ({ _id }, done) => {
        try {
          const user = await AuthSchema.findById(_id).lean()
          if (!user) done(null, false)
          done(null, user)
        } catch (err) {
          done(err, false)
        }
      }
    )
  )
}

Example 4: passport js

app.get('/auth/google',
  passport.authenticate('google', { scope: ['profile'] }));

app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });

Tags:

Misc Example