Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

109
Views
Problema de Passport-Local y Express Router con importaciones

Tengo una aplicación Express.js con una autenticación Passport-local, estoy tratando de implementar un enrutador express en mi aplicación, ya que se está volviendo muy difícil de depurar.

Este es un ejemplo de mi archivo principal (app.js)

 const express = require('express') const app = express() const passport = require('passport') const testing = require('./routes/file') app.use(passport.initialize()) app.use(passport.session()) app.use('/router', testing) const initializePassport = require('./passport-config'); initializePassport.initialize(passport); app.get('/', checkAuthenticated, (req, res) => { let user = data.key res.send(`Hi ${user}`) }) app.post('/login', checkNotAuthenticated, passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true })) function checkAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next() } res.redirect('/login') } function checkNotAuthenticated(req, res, next) { if (req.isAuthenticated()) { return res.redirect('/') } next() } app.listen(3000)

Así es mi archivo principal, esto funciona perfectamente bien y solo para aclarar las cosas, la función es verificar si un usuario está autenticado o no, también mi pasaporte-config devuelve algo llamado data.key que es básicamente el nombre de usuario de el usuario.

Ahora he creado un enrutador aquí app.use('/router', testing) con la ruta como /router para fines de prueba

Ahora este es mi archivo.js que está siendo utilizado por express

 const express = require('express'), router = express.Router(); var bodyParser = require('body-parser'); // Handle POST requests router.use(bodyParser.urlencoded({ extended: false })); router.use(bodyParser.json()); router.get('/test', checkAuthenticated, (req, res) => { let user = data.key; res.send(`Hello ${user}, this is coming from the router`) }) module.exports = router;

Ahora, como se esperaba, cuando abro el sitio en localhost: 3000/router/test, devuelve un error indefinido para data.key ya que no está importado y luego, cuando comento la línea que causa el error, checkAuthenticated no funciona, incluso cuando No he iniciado sesión, puedo acceder a la página, ahora este es el problema, ¿cómo lo soluciono? Revisé todos los documentos del enrutador expreso y no pude encontrar suerte allí.

Gracias

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Su función no está en el alcance global, necesita configurarla en global para poder verla como:

 GLOBAL.authFunction = function(){ }

Sugerencia:

1- cree un módulo para la autenticación, asígnele el nombre authModule.

2- importe el middleware de verificación de autenticación del módulo donde quiera.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!