Estoy tratando de usar un middleware en Express, pero no puedo hacer que funcione. Obtengo un tiempo de carga infinito cuando hago una solicitud. Busqué en stackoverflow pero no pude encontrar ningún ejemplo que usara un middleware asíncrono de espera almacenado en un archivo separado. ¿Alguien me puede apuntar en la dirección correcta?
isAuthenticated.js
const Auth = require('../auth/auth') const isAuthenticated = async () => { return async (request, response, next) => { const token = request.cookies.token; try { const JWTVerify = await Auth.verifyJWTToken(token); next() } catch (error) { response.json({ status: "failed", message: "Authentication failed invalid token" }); response.end(); } } } module.exports = isAuthenticatedServidor.js
const isAuthenticated = require('./middleware/isAuthenticated') app.post('/some-route', isAuthenticated, async (request, response) => { });Está devolviendo una función y, por lo tanto, el middleware no está pasando la solicitud.
Las funciones de middleware son funciones que tienen acceso al objeto de solicitud (req), al objeto de respuesta (res) ya la siguiente función en el ciclo de solicitud-respuesta de la aplicación. La siguiente función es una función en el enrutador Express que, cuando se invoca, ejecuta el middleware que sucede al middleware actual.
verificar ---> http://expressjs.com/en/guide/writing-middleware.html
const Auth = require('../auth/auth') const isAuthenticated = async (request, response, next) => { const token = request.cookies.token; try { const JWTVerify = await Auth.verifyJWTToken(token); next() } catch (error) { response.json({ status: "failed", message: "Authentication failed invalid token" }); response.end(); } } module.exports = isAuthenticatedCreo que el problema es la definición de su middleware. Lo está envolviendo dentro de una función, pero no lo está llamando. Si lo pasa así a express, express intentará llamarlo, pero la función externa solo devuelve la función interna. Por lo tanto, nunca se llama a la función interna, por lo que nunca se llama a next() .
const isAuthenticated = async (request, response, next) => { const token = request.cookies.token; try { const JWTVerify = await Auth.verifyJWTToken(token); next() } catch (error) { response.json({ status: "failed", message: "Authentication failed invalid token" }); response.end(); } }