Tengo un componente de inicio de sesión en el frente en el que hago un POST a una ruta en el servidor:
const handleSubmit = async (e) => { e.preventDefault(); try { fetch("http://localhost:3000/login", { method: "POST", mode: "cors", headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*", }, body: JSON.stringify({ email, password, }), }); } catch (error) { console.log(error.message); } };En el lado del servidor, valido la información enviada desde el frente:
app.post("/login", async (req, res) => { const user = await Users.findOne({ where: { email: req.body.email, password: req.body.password }, }); if (user) { console.log(user); console.log("usuario logeado"); res.status(200).send("LOGGED"); } else { console.log("Usuario no Registrado"); } });Quiero redirigir a un componente Inicio en el frente una vez que valide al usuario y sepa cómo hacerlo.
Debe leer la respuesta del servidor y averiguar qué quiere hacer con ella. Recomendaría no enviar solo una cadena desde el servidor, por lo que esta solución se reestructurará un poco para ayudarlo a comprender y expandir sus propias necesidades.
// From your server - we're sending some json that we can // read in the front end code. Maybe you also want to send // the user object or other data, and json is great for that. app.post("/login", async (req, res) => { const user = await Users.findOne({ where: { email: req.body.email, password: req.body.password }, }); if (user) { console.log(user); console.log("usuario logeado"); res.status(200).send({ isLoggedIn: true, }); } else { console.log("Usuario no Registrado"); res.status(200).send({ isLoggedIn: false, }); } }); const handleSubmit = async (e) => { e.preventDefault(); try { const response = await fetch("http://localhost:3000/login", { method: "POST", mode: "cors", headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*", }, body: JSON.stringify({ email, password, }), }); // Get the server response as json const data = await response.json() if(data.isLoggedIn) { // Redirect to the account window.location.href = "/account" } else { // Show some error message window.alert("Invalid login") } } catch (error) { console.log(error.message); } };