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('/');
});