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

455
Visualizações
NodeJS ¿Cómo puedo hacer mi ruta fuera del middleware?

Tengo algunas rutas en mi API. Y tener un middleware. Está creando un token de portador y comprobándolo. Pero quiero que algunas de mis rutas no ingresen a ese middleware para poder acceder sin token. ¿Cómo puedo hacerlo? Mi software intermedio:

 app.use(async (req, res, next) => { if ( req.path === "/api/v1/collection/byhome" || // I dont want that part. req.path === "/api/v1/user/login" // Its working but its not looks like best solution. ) { next(); } else { const bearerHeader = req.header("authorization"); if (typeof bearerHeader !== "undefined") { const bearer = bearerHeader.split(" "); const bearerToken = bearer[1]; req.token = bearerToken; jwt.verify(req.token, process.env.SECRETKEY, async (err, authData) => { if (err) { res.sendStatus(401); } else { next(); } }); } else { res.statusCode = 400; const Response = { message: "Invalid Token", StatusCode: res.statusCode, }; res.json(Response); } } });

Mi ruta:

 app.get( `/api/${version}/article/bycollection/:id`, ArticleRoute.getbycollection );
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

su forma de hacerlo es correcta, puede hacer que su código sea más legible haciendo una matriz de todo el middleware que desea que esté fuera del alcance de su middleware

 const whiteListEndpoints = ["/api/v1/this", "/api/v1/this1", "/api/v1/this2"]

después

 // your middleware app.use((req, res,next) => { //if the path was in the whitelist just call next function if(whiteListEndpoints.includes(req.url)) return next() // let the middlware do it's job })

o puede cambiar su orden de use expreso

 const firstRoute = app.use("/no_middleware", router); app.use((req, res, next) => {}) // your middleware const secondRoute = app.use("/with_middleware", router);

aquí el primer enrutador no usará el middleware ya que aún no ha sido llamado.

over 4 years ago · Santiago Trujillo Relatório

0

Puede usar Express.Router para lograr el resultado deseado. Con el enrutador express puede diferenciar entre rutas y tener diferentes middlewares para cada enrutador.

Siga los pasos que se indican a continuación:

  1. Cree un middleware de autenticación middlewares/private.authenticate.js
 function auth(req, res, next) { // do auth stuff... next(); }
  1. Cree un archivo routes/private/index.js
 // private route handler import { Router } from "express"; import auth from "./middlewares/private.authenticate.js"; const router = Router(); router.use(auth); // use auth middleware router.route("/") .get() .put() export default router;
  1. Cree un archivo routes/public/index.js
 import { Router } from "express"; const router = Router(); router.route("/") .get() .put() export default router;
  1. Su archivo de aplicación express
 import express from "express"; const app = express(); import PublicRoutes from "./routes/public"; import PrivateRoutes from "./routes/private"; // public routes path app.use("/api/public", PublicRoutes); // private routes path app.use("/api/private", PrivateRoutes);
over 4 years ago · Santiago Trujillo Relatório

0

Puede crear una ruta express.Router() y configurarla en una path , este enrutador tiene toda la autenticación, luego cree un segundo express.Router() y esto sin autenticación.

 var router = express.Router(); // your code for API auth... router.get('/api/v1/collection/byhome',myMiddleware, (req, res, next) => { res.send('Hey There'); }) app.use('/api', router); var routerGuest = express.Router(); // routerGuest.get('/', (req, res, next) => { res.send('Hey There'); }) app.use('/guest', routerGuest)

para la autenticación, recomiendo hacer un middleware separado y luego pasarlo a nuestra ruta

 function myMiddleware(req, res, next){ const bearerHeader = req.header("authorization"); if (typeof bearerHeader !== "undefined") { const bearer = bearerHeader.split(" "); const bearerToken = bearer[1]; req.token = bearerToken; jwt.verify(req.token, process.env.SECRETKEY, async (err, authData) => { if (err) { res.sendStatus(401); } else { next(); } }); } else { res.statusCode = 400; const Response = { message: "Invalid Token", StatusCode: res.statusCode, }; res.json(Response); } } }

Creo que con esto puedes tener alguna idea para hacerlo :)

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
Assistente virtual