Estoy tratando de redirigir al usuario después de que se haya validado el registro. Vea el código a continuación, nunca funcionó con todo lo que probé. También probé en la parte delantera con
<Redirect=to"/login" />tampoco fue un éxito. Estoy tratando de redirigir a: http://localhost:3000/login, el backend está actualmente en el puerto 5000. También veo esos errores en la consola:
Access to XMLHttpRequest at 'http://localhost:3000/login' (redirected from 'http://localhost:5000/users/signup') from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. GET http://localhost:3000/login net::ERR_FAILED createError.js:16 Uncaught (in promise) Error: Network Error at createError (createError.js:16) at XMLHttpRequest.handleError (xhr.js:99)Mi primer pensamiento fue que el encabezado no está configurado, pero está en mi app.js
app.use((req, res, next) => { res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader( "Access-Control-Allow-Headers", "Origin, X-Requested-With, Content, Accept, Content-Type, Authorization" ); res.setHeader( "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS" ); next(); });Gracias por adelantado
exports.signup = (req, res) => { bcrypt.hash(req.body.password, 10).then((hash) => { const user = { lastName: req.body.lastName, firstName: req.body.firstName, email: req.body.email, password: hash, }; User.create(user) .then(() => { res.redirect(301, 'http://localhost:3000/login'); }) .catch((error) => res.status(500).json({ message: "Impossible de créer l'utilisateur. " + error })); }); };res.status(200).redirect('login');(EDITAR) Esto devolverá 200 y redirigirá al usuario desde el backend.
Esta es mi solución desde el principio, si lo desea.
En la interfaz, puede redirigir a la ubicación deseada usando window.location.replace('/login') después de que el expreso devuelva un valor.
Lo que quiero decir con esto es que después de validar al usuario en su Express API, devuelva 200 a través res.status(200).send() para que su interfaz sepa que este usuario puede ser redirigido.
Un ejemplo con jQuery:
Interfaz
<script> $.get('http://localhost:3000/login', function(data, status, jqXHR) { if (status === 200) { window.location.replace('redirect-location.html') } else { // What to do if the status isn't 200 } }) </script>Back-End:
app.get('/login', (res, req, err) => { // Validate const result = validatefunction() // true if login matches, false otherwise if (result) { res.status(200).send() } else if (!result) { res.status(400).send() } else { res.status(500).send() } })Espero haber ayudado.