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.

Así que vamos a cambiar nuestro string de conexión de MongoDB en el archivo config/environment/index.js
por este nuevo valor.
/**
* Default specific configuration
*/
const all = {
...
// MongoDB connection options
mongo: {
// Change de connection string
uri: process.env.MONGODB_URI || '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',
},
};
module.exports = all;
Luego de esto, 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 config = require('./environment');
const MongoStore = connectMongo(session);
app.use(passport.initialize());
app.use(session({
secret: config.secrets.session,
saveUninitialized: true,
resave: false,
store: new MongoStore({
url: config.mongo.uri,
}),
}));
Finalmente nuestro archivo de configuración de express se verá así:
/**
* Express configuration
*/
const compression = require('compression');
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const errorHandler = require('errorhandler');
const logger = require('morgan');
// New Lines
const connectMongo = require('connect-mongo');
const session = require('express-session');
const passport = require('passport');
const config = require('./environment');
const MongoStore = connectMongo(session);
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: config.mongo.uri,
}),
}));
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);
};

Repositorio: Configuration passport.js
Last updated
Was this helpful?