DEV Community

Cover image for Intro a passportjs con node y mongoDB
Jesus Abril
Jesus Abril

Posted on

Intro a passportjs con node y mongoDB

Seguro, flexible y modular

Passportjs nos ayuda a autentificar a nuestros usuarios, clientes o visitantes, de una forma sencilla, ágil y robusta.
Passportjs está diseñada para trabajar con base en express.

Para comenzar y suponiendo que nuestro proyecto está preconfigurado vamos a instalarlo.

Vamos a necesitar:

//=================================
// * passport
// * passport local
// * passport local moongose
// * express-session
//=================================
Enter fullscreen mode Exit fullscreen mode
  1. passport *es la librería principal.
  2. passport local *es la más simple, solamente para declarar usuario y password.
  3. passport local moongose *es el driver para nuestra base de datos en mongoDB. 4.express-session *nos ayudará a configurar las sesiones una vez logueado el usuario.

Comenzamos instalando lo necesario

npm install passport passport-local passport-local-mongoose express-session --save
Enter fullscreen mode Exit fullscreen mode

Una vez instalados los paquetes necesarios vamos a crear nuestro modelo de usuario.

user.js

const        mongoose   =   require('mongoose'),
passportLocalMongoose   =   require('passport-local-mongoose');

const UserSchema = new mongoose.Schema({
    username: String,
    password: String
});
// añadimos todas las características de passport a nuestro schema
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model('User', UserSchema);
Enter fullscreen mode Exit fullscreen mode

Ahora vamos a nuestro archivo principal js, en mi caso app.js y configuramos passport para funcionar con express y mongodb.

app.js

//declaramos nuestra variables 
const   passport        = require('passport'),
        LocalStrategy   = require('passport-local');
//importamos nuestro modelo Usuario
        User        = require('./models/users'),

//configuramos passport
app.use(require('express-session')({
   secret: 'Una frase secreta para encriptar',
   resave: false,
   saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(function(req, res, next){
    res.locals.currentUser = req.user;
    next();
}); //le pasamos a nuestro express el usuario de manera global
Enter fullscreen mode Exit fullscreen mode

Ya tenemos nuestro servidor a punto para usar passportjs.

Vamos a ello.

app.js


app.post('/login', passport.authenticate('local', 
            {
               successRedirect: '/bienvenido',
               failureRedirect: '/login',
               failureFlash: 'Usuario o contraseña incorrecto'
            }), (request, response){}
        );
app.get('/loggout', (req, res) =>{
    req.logOut();
    res.redirect('/index');
});
Enter fullscreen mode Exit fullscreen mode

Con la función incorporada authenticate() de passportjs, obtendremos el resultado de si el usuario está identificado o no.

Todo esto sucede gracias a passportjs y sus métodos de fácil uso.

Aquí os dejo el link a mi código un poco más complejo pero donde utilizo casi toda la funcionalidad de passportjs codigo

Top comments (0)