Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

232
Visualizações
¿Cómo usar diferentes sesiones para diferentes rutas en express?

Estoy tratando de hacer que la funcionalidad de inicio/cierre de sesión sea de dos categorías, admin y employee .
Y cuando se use app.use(session()) , la sesión estará disponible para todas las rutas. Y eso es genial. Pero cuando quiero cerrar sesión, digamos administrador usando req.session.destroy() . Se cierra la sesión, pero toda la sesión se ha ido, incluido el administrador y el empleado. Y eso no es lo que quiero. Quiero destruir solo la sesión relacionada con el administrador para el cierre de sesión del administrador y la sesión relacionada con el empleado para el cierre de sesión del empleado. Entonces, ¿cómo puedo hacer esto?
Y soy nuevo en autenticación y autorización. Hágame saber cuáles son las mejores prácticas para usar sesiones, o si es mejor JWT o cualquier cosa que me ayude a ser mejor en eso.
Para esta pregunta relacionada.
mi aplicación.js

 // session app.use( session({ secret: process.env.SECRET, resave: false, saveUninitialized: false, store, cookie: { maxAge: 20000, secure: false, }, }) ); app.use("/api/admin", adminRoutes); app.use("/api/employee", employeeRoutes); app.get("/api", (req, res) => { res.send("Api is running"); });

y cuando se llama a la ruta api/admin/login , se llama a este controlador,

 const adminLoginController = asyncHandler(async (req, res) => { console.log("I ran"); const { pass } = req.body; if (someDBCheckHere) { req.session.adminAuthenticated = true; req.session.admin = { pass: pass }; res.send("success"); } else { res.status(401).send({ message: "Login Failed" }); console.log("failure"); } });
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No estoy muy seguro de por qué destruirías la sesión. ¿Lo leíste en alguna parte que te dice que lo hagas?
Entonces, por el comportamiento, puede ver que la sesión está destinada a vivir, no a destruirse: D

Para "cerrar sesión" de un usuario, simplemente configure la cookie en una fecha de caducidad

over 4 years ago · Santiago Trujillo Relatório

0

Confirme si mi interpretación de su requisito es correcta:

Sus usuarios pueden iniciar sesión en dos roles, con diferentes contraseñas por rol. Y es posible que incluso inicien sesión en ambos roles simultáneamente (ya sea dando dos contraseñas o porque el rol de administrador incluye el rol de empleado).

Puede lograr esto teniendo solo una sesión, con los atributos req.session.employeeAuthenticated y req.session.adminAuthenticated . Después de validar una contraseña, establecería uno (o ambos) de estos atributos, y los usuarios también podrían "cerrar la sesión del rol de administrador", después de lo cual simplemente establecería req.session.adminAuthenticated = false pero mantendría la sesión.

La primera de las adminRoutes debe validar que el usuario actual tenga el rol de administrador:

 function(req, res, next) { if (req.session.adminAuthenticated) next(); else res.status(403).end("Forbidden for non-admins"); }

(y del mismo modo en employeeRoutes ).

Solo cuando el usuario cierre la sesión por completo, llamarías a req.session.destroy() .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda