Mi verificación de autenticación de pasaporte node.JS está atascada en un bucle infinito si devuelvo el estado 400 para solicitudes que no están autenticadas:
//ensure authentification function authorizeApi(req, res, next) { if (req.isAuthenticated()) { return next(); } else res.status(400).json({ message : "User Not Authenticated", user : null }) } // retrieve logged in user profile router.post("/login/success",authorizeApi, (req, res) => { ... res.json({ success: true, message: "user has successfully been authenticated", user: req.user, cookies: req.cookies }); } app.use(bodyParser.json({ limit: "50mb", extended: true })); app.use(bodyParser.urlencoded({ extended: true })); app.use("/auth", authRoutes);Si devuelvo solo el perfil de los usuarios que están autenticados me sale una solicitud del cliente que queda en pendiente...
EDITAR: después de que el usuario haya iniciado sesión, el bucle finaliza y el back-end devuelve la información del perfil del usuario.
Mi aplicación cliente está construida en React. La función que obtiene el perfil de usuario es una búsqueda interna:
login(); }, []) // gets login details function login() { fetch(config.baseURL + config.baseLOCATION + "/auth/login/success/", { method: "POST", credentials: "include", headers: { Accept: "application/json", "Content-Type": "application/json", "Access-Control-Allow-Credentials": true, } }) .then(response => { if (response.status === 200) return response.json(); throw new Error("failed to authenticate user"); }) .then(responseJson => { sessionStorage.setItem('exp', responseJson.user.exp); .... dispatch({ type: UPDATE_PROFILE, payload: { role: responseJson.user.roles, .... } }); } ) .catch(error => { setState({ authenticated: false, error: "Failed to authenticate user" }); console.log(error); _handleLogoutClick(); }); }ACTUALIZACIÓN: el problema se genera desde el cliente frontend.
He actualizado la solicitud del cliente:
.then(response => { if (response.status) return response.json(); }) .then(responseJson => { if(responseJson.success === true) { ... } else { ... }