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)