Как войти в систему с помощью ReactJS, NodeJS с помощью MySQL?

Я начинающий разработчик ReactJS, хочу войти в свою форму с помощью ReactJS, NodeJS и MySQL.

Мой класс Логин находится ниже:

     handleClick(event){
    var self = this;
    var payload = {
      "username":this.state.username,
        "password":this.state.password
    }
    axios({
          method: 'post',
          url: '/app/login/',
          data: payload,
          withCredentials: true,
          headers: {
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'application/json',
            'Accept': 'application/json',
          }
        })

   .then(function (response) {
     console.info(response);
     if (response.data.code == 200){

    this.props.history.push("http://localhost:5000/brillo#/");
     }
     else{
       swal("Erreur !", "Erreur !", "error");
     }
   })
   .catch(function (error) {
     console.info(error);
   });
  }
  handleredirect(){
    this.props.history.push("/register");
    }
  render() {
    return (
      <div className = "app flex-row align-items-center">

                    <Form  method = "POST" >

                      <InputGroup className = "mb-3">
                        <Input type = "text" placeholder = "Username" autoComplete = "username" value = {this.state.username} onChange = {e => this.setState({ username: e.target.value })} required/>
                      </InputGroup>
                      <InputGroup className = "mb-4">
                        <Input type = "password" value = {this.state.password} placeholder = "Password" onChange = {e => this.setState({password: e.target.value })} autoComplete = "current-password"   required/>
                      </InputGroup>
                      <Row>
                        <Col xs = "6">
                          <Button type = "button" color = "primary" className = "px-4" onClick = {(event) => this.handleClick(event)}>Login</Button>
                        </Col>
                        <Col xs = "6" className = "text-right">
                          <Button color = "link" className = "px-0">Forgot password?</Button>
                        </Col>
                      </Row>
                    </Form>

      </div>
    );
  }
}

export default Login;

Мой роутер:

exports.login = function(req,res){
  var email= req.body.email;
  var password = req.body.password;
 var username = req.params.username;
  connection.query('SELECT * FROM users WHERE username = ?',[username], function (error, results, fields) {
  if (error) {
   res.send({
      "code":400,
      "failed":"error ocurred"
    })
  }else{
    if (results.length >0){
      bcrypt.compare(password, results[0].password, function(err, doesMatch){
        if (doesMatch){
     res.send({
       "code":200,
       "success":"login sucessfull"
         });
      }else{
     res.send({
       "code":204,
       "success":"Email and password does not match"
         });
      }
    });
  }
    else{
      res.send({
        "code":204,
        "success":"Email does not exits"
          });
    }
  }
  });

}

Когда я запускаю свой бэкэнд с Postman, отправляя http://localhost:4000/app/login/, я получаю:

{
    "code": 204,
    "success": "Email does not exits"
}

Но я отправляю сообщения с именем пользователя и паролем, которые я отправил в форме регистрации, и когда я запускаю свой интерфейс, я получаю:

{data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}
config:
{
data:
code:204
success:"Email does not exits"

Я хочу, чтобы когда я нажимал кнопку входа в систему, он был перенаправлен на страницу панели управления.

Как я могу это решить?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
1 198
1

Ответы 1

ваш маршрутизатор nodejs кажется неправильным, вы берете из основного письма, пароль, имя пользователя, но электронное письмо не отправляется с помощью реакции. Тогда что вы ищете в своей базе данных, адрес электронной почты или имя пользователя?

Следующий в очереди

connection.query('SELECT * FROM users WHERE username = ?',[username], function...

Я думаю, это должно быть больше похоже на:

connection.query('SELECT * FROM users WHERE username = \'' + username + '\'', function...

И, кстати, ваш ответ неверен: вы должны вернуть:

return res.status(500).json({ failed: 'error ocurred'})

и нет

res.send({"code":400,"failed":"error ocurred"})

при смене получаю: { "failed": "error ocurred" }

Melissa 30.08.2018 00:13

напечатайте ошибку в неудавшемся ответе json, чтобы помочь вам. return res.status (500) .json ({failed: 'error ocurred:' + error}) А также для каждого res.send вы должны преобразовать в правильный res.status (XXX) .json (JSON.OBJ) и добавить возврат раньше (но это не ваша текущая проблема)

Gulivert 30.08.2018 00:22

Получаю: xhr.js:178 POST http://localhost:5000/app/login/ 500 (Internal Server Error) dispatchXhrRequest @ xhr.js:178 xhrAdapter @ xhr.js:12 dispatchRequest @ dispatchRequest.js:59 Promise.then (async) request @ Axios.js:51 Login.js:51 Error: Request failed with status code 500 at createError (createError.js:16) at settle (settle.js:18) at XMLHttpRequest.handleLoad (xhr.js:77)

Melissa 30.08.2018 00:51

Другие вопросы по теме