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

73
Views
La aplicación Nodejs de repente comenzó a actuar de manera diferente

Esta parte del código maneja el enrutamiento de autorización de inicio de sesión en mi aplicación

 const express = require("express"); const authController = require('../controllers/authController'); const indexController = require('../controllers/indexController'); const router = express.Router(); router.use("/login", (req, res, next) => { if(req.session.loggedIn) { res.redirect('/account'); } next(); }); router.use("/account", (req, res, next) => { if(!req.session.loggedIn) { res.redirect('/login'); } next(); }); router.get('/', (req, res) => { res.redirect('/login'); }); router.get('/login', (req, res) => { res.render('login'); }); router.get('/log-out', authController.logOut); router.get("/account", indexController.getAccountData); module.exports = router;

No hubo problemas y funcionó bien hasta hace unos días.

No he cambiado nada en este archivo ni authController ni indexController . Cuando realizo un cambio (en otras partes), nodemon reinicia la aplicación y automáticamente salto a la página de inicio de sesión porque, obviamente, todas las sesiones se destruyen. Pero recibo un error en la función getAccountData (el error dice que req.session no está definido).

Como puede ver, no hay forma de que la aplicación alcance esa función sin sesiones configuradas.

Tengo que reiniciar la aplicación de nuevo para actuar correctamente.

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

0

req.session.loggedIn generaría un error cada vez que la sesión no esté definida. Debe verificar si está definido antes de intentar acceder a loggedIn .

Probar:

 router.use("/login", (req, res, next) => { if(req.session && req.session.loggedIn) { res.redirect('/account'); } next(); }); router.use("/account", (req, res, next) => { if(!req.session || !req.session.loggedIn) { res.redirect('/login'); } next(); });
about 4 years ago · Juan Pablo Isaza Report

0

La sesión se borrará cada vez que se reinicie el servidor. Entonces, para escapar de eso, debe guardar la sesión en la base de datos. Si está usando mongodb o puedo darle un ejemplo usando mongodb.

 import MongoStore from "connect-mongo"; import session from "express-session"; app.use( session({ store: MongoStore.create({ mongoUrl: process.env.MONGODB_URI || "mongodb://localhost:27017/project", }), secret: "secret key", cookie: { maxAge: sessionExpireInMilliseconds }, }) );
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!