Así que estoy sirviendo una página web en la ruta raíz '/', y esta página tenía un middleware de autenticación. usando regular
app.use('/', authorizeFront, express.static('../client/dist'));
haría que todas las rutas fueran autenticadas, que es lo que estoy tratando de evitar. También intenté usar expresiones regulares para que coincida exactamente con '/', pero parece que no funciona.
app.use('/^/$/', authorizeFront, express.static('../client/dist'));
¿Hay alguna forma oficial de hacer esto? ¡Gracias!
app.use hace una coincidencia parcial. Utilice app.get en su lugar.
Al usar app.use("/") , esto coincidirá con cualquier ruta y método que comience con "/" . Esto sucede porque app.use() está diseñado para middlewares globales.
En su lugar, puede usar app.get("/", yourTargetedMiddlewaer) para apuntar a una ruta específica y un método específico (GET) en este caso.
Otra forma de hacer esto podría ser:
app.use("*", (req, res, next) => { if (req.baseUrl === "") { // For / requests baseUrl will be empty // Call authenticator and then call next() if auth succeeds else call next(err) } else { console.info("Bypassing Authentication"); next(); } });Esto afectará al middleware para todas las solicitudes, pero usted tiene el control para qué solicitud desea llamar al autenticador.