web-dev-qa-db-fra.com

Redirection du côté serveur dans les prochains

Je développe une application NEXT.JS dans laquelle un utilisateur doit se connecter pour voir le contenu.Je souhaite rediriger l'utilisateur sur '/' si leur nom d'utilisateur et leur mot de passe sont corrects.Cependant ma mise en œuvre semble ne pas fonctionner.

J'ai cherché sur SO pour des questions à ce sujet, mais tous parlaient de rediriger avec getInitialProps mais cela ne m'aidait pas car je souhaite rediriger l'utilisateur de mon express personnalisé serveur.

( login.js

 async handleSubmit(event) {
  event.preventDefault()
  const { username, password } = this.state

  try {
    const response = await fetch('/log_in', {
      method: 'post',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ username, password })
    })
  }

 catch (error) {
    console.log(error)
  }
}  

(( server.js

app.post('/log_in', (req,res) => {
    console.log(`login form data`);
    console.log(`Username : ${req.body.username}`);
    console.log(`password : ${req.body.password}`);
    if(req.body.username == "user" && req.body.password == "123"){
        res.redirect('/')
    }
}) 
7
Pavindu

Avec Next.js, vous devez rediriger le client du côté client. Essayez de renvoyer un code de statut 200 si le login est réussi, puis utilisez le routeur client sur le succès pour accéder à une autre page. Cet exemple devrait vous donner une idée de la manière dont vous pouvez appuyer programmatiquement une nouvelle page à l'historique du routeur:

import Router from 'next/router'

() => {
  if(code==200){
    Router.Push('/')
  }
}
1
Jan Peter