Я начинающий разработчик 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"
Я хочу, чтобы когда я нажимал кнопку входа в систему, он был перенаправлен на страницу панели управления.
Как я могу это решить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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