Tengo valores req.session que se almacenan al iniciar sesión. Pero lo que quiero hacer es acceder a ellos en cada página de mi aplicación (front-end (ejs)), pero no quiero acceder a todas las rutas/funciones que tengo y aprobarlas. Entonces, me preguntaba si hay una forma universal de pasar req.session al front-end desde una ruta y acceder a ellos en todas las páginas.
mis rutas se ven así:
app.get('/', (req, res) => { res.render("index.ejs"); })Lo siento si esta es una pregunta extraña, pero me pregunto si hay formas universales de hacer cosas como esta.
En la autenticación, probablemente necesite estas dos cosas:
Debe configurar algo como authContext para obtener información de sessionID del backend y activar alguna función al iniciar y cerrar sesión para revisar la autenticación. Es posible que desee investigar React Context para descubrir cómo aplicar el "estado global", si no está familiarizado con eso.
En el backend, use el middleware para autenticar cada solicitud HTTP y aplique ese middleware a la ruta en la que desea aplicar la autenticación.
Que puede ser algo como esto:
async function auth (req, res, next) { try { const session = await MySessions.findById(req.sessionID); if (!session) throw 'Not authenticated' else next() } catch (error) { // Response will be rejected, and wont be passed to route due to not sending next() return res.status(401).send({ error }) } } // Example of applying middleware auth to route you need. router.delete('/:postId', auth, async (req, res) => { ... }