Configuración Passport.js
Passport sólo proporciona el mecanismo para manejar la autenticación, dejando la responsabilidad de implementar la sesión de manipulación de nosotros mismos y para eso vamos a utilizar express-session.
Esto es necesario ya que queremos que nuestras sesiones de usuario sean persistentes por naturaleza. Antes de ejecutar la aplicación, debemos instalar express-session y añadirla a nuestra lista de dependencias en package.json
.
Para hacer eso:
# Install Dependecies
npm i -S connect-mongo express-session
El módulo npm connect-mongo
no puede manejar mongodb+srv://
cadenas de conexión. Tendrá que usar los tipos de cadena de conexión más antiguos que comienzan con mongodb://
. Como estamos utilizando MongoDB Atlas, debemos conectarnos a Atlas e ir a la vista de clúster, luego conecte su aplicación y luego seleccione Node.js versión 2.2.12, no 3.0. Y no olvide cambiar el /test
en su cadena de conexión a /TheNameOfYourDatabase
con el nombre de su base de datos.

En nuestro archivo de configuración de express vamos agregar las siguientes lineas:
// New Lines
const connectMongo = require('connect-mongo');
const session = require('express-session');
const passport = require('passport');
const MongoStore = connectMongo(session);
const config = {
secrets: {
session: 'w0rksh0p-full5tack-j4v45cr1pt',
},
};
app.use(passport.initialize());
app.use(session({
secret: config.secrets.session,
saveUninitialized: true,
resave: false,
store: new MongoStore({
url: 'mongodb://<username>:<password>@cluster0-shard-00-00-9bgzf.mongodb.net:27017,cluster0-shard-00-01-9bgzf.mongodb.net:27017,cluster0-shard-00-02-9bgzf.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority',
}),
}));
Finalmente nuestro archivo de configuración de express se verá así:
/**
* Express configuration
* @author: Cristian Moreno Zulauaga <khriztianmoreno@gmail.com>
*/
const compression = require('compression');
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const errorHandler = require('errorhandler');
const logger = require('morgan');
// New line
const connectMongo = require('connect-mongo');
const session = require('express-session');
const passport = require('passport');
const MongoStore = connectMongo(session);
const config = {
secrets: {
session: 'w0rksh0p-full5tack-j4v45cr1pt',
},
};
module.exports = (app) => {
const env = app.get('env');
app.use(compression());
app.use(bodyParser.urlencoded({ extended: false, limit: '50mb' }));
app.use(bodyParser.json({ limit: '50mb' }));
app.use(methodOverride());
app.use(logger('dev'));
// New line
app.use(passport.initialize());
// New line
app.use(session({
secret: config.secrets.session,
saveUninitialized: true,
resave: false,
store: new MongoStore({
url: 'mongodb://<username>:<password>@cluster0-shard-00-00-9bgzf.mongodb.net:27017,cluster0-shard-00-01-9bgzf.mongodb.net:27017,cluster0-shard-00-02-9bgzf.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority',
}),
}));
if (env === 'development' || env === 'test') {
app.use(errorHandler()); // Error handler - has to be last
}
};
Ahora vamos agregar nuestra ruta de estrategia local al archivo de rutas.
/**
* Main application routes
* @author: Cristian Moreno Zuluaga <khriztianmoreno@gmail.com>
*/
// Import Endpoints
const helloWorld = require('./api/helloworld');
const product = require('./api/product');
const user = require('./api/user');
// New line
const auth = require('./auth');
module.exports = (app) => {
app.use('/api/helloworld', helloWorld);
app.use('/api/products', product);
app.use('/api/users', user);
// New line
app.use('/auth', auth);
};

Last updated
Was this helpful?