Tengo variables req.session que configuro al iniciar sesión, así:
req.session.loggedin = true req.session.firstname = loginDetails.firstName;lo que quiero hacer es pasar esta información a TODAS las rutas (tengo casi 60, y no quiero revisarlas todas y agregarlas manualmente), y también todas las rutas que tengo llaman al front-end usando esto:
res.render('page.ejs', {data: rows}), so I would ideally want it to pass it to the front-end pages so I can access them there too. Not sure if this is possible, but worth a shot! thx 4 the help in advance!Puede crear una función de middleware y agregar variables a una express-session existente.
aplicación.js
const express = require("express"); const session = require("express-session"); // express app const app = express(); app.use(express.json()); // init example session with express session app.use(session({ resave: true, secret: "123456", saveUninitialized: true })); // use a middleware function app.use((req, res, next) => { if (!req.session.initialised) { // init variables you want to set in req.session req.session.loggedin = true; req.session.firstname = "john doe"; } next(); }); // test api endpoint app.use("/testroute", require("./routes/api/test")); // run server const PORT = process.env.PORT || 8000; app.listen(PORT, () => console.log(`Server started on port ${PORT}`)); Luego puede consultar sus variables como req.session.firstname en cualquier otra ruta en el objeto de solicitud. También puedes actualizarlo desde tus rutas
prueba.js
// testroute const router = express.Router(); router.get("/", async (req, res) => { // get variables from request object try { console.log(req.session.firstname); console.log(req.session.loggedin); // this would update the session variable if uncommented // req.session.firstname = "dagobert" // console.log(req.session.firstname); res.status(200).json({ message: `Your firstname is ${req.session.firstname}` }); } catch (error) { res.status(400).json({ message: error.message }); } }); module.exports = router;