Я не могу заставить эту систему входа в систему работать, вот мой код:
Код реакции:
login(username, password) {
fetch('http://localhost:8080/login', {
method: 'post',
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json, text/plain, */*',
},
body: JSON.stringify({username: username, password: password})
}).then(res=>res.json())
.then(res => console.log(res));
}
Бэкэнд узла, вызываемый кодом React:
app.post("/login", function(request, response) {
passport.authenticate("local-login", function(err, user, info) {
console.log("username: ", user)
if (err) {
return console.log(err);
}
if (!user) {
return response.send(false);
}
request.logIn(user, function(err) {
if (err) {
return console.log(err);
}
checkLogIn(request, response);
return response.send(true);
});
})(request, response);
});
И Passport.js:
passport.use(
'local-login',
new LocalStrategy({
usernameField : 'username',
passwordField: 'password',
passReqToCallback: true
},
function(req, username, password, done){
connection.query("SELECT * FROM tbl_users WHERE username = ? ", [username],
function(err, rows){
if(err)
return done(err);
if(!rows.length){
return done(null, false, req.send(JSON.stringify({ logged: "NO" })));
}
if(!bcrypt.compareSync(password, rows[0].password))
return done(null, false, req.send(JSON.stringify({ logged: "NO" })));
return done(null, rows[0]);
});
})
);
Независимо от того, какие учетные данные я ввел, я получаю «False» в консоли Chrome.Это «False» происходит от серверной части узла, эта строка:
if (! User) {
return response.send (false);
}
Как вы можете видеть, я также консоль регистрирую имя пользователя в бэкэнде Node, и вот что я получаю из этой команды:
имя пользователя: false
Что должноЯ изменяю, чтобы консоль регистрировала имя пользователя пользователя, если его учетные данные верны, и консоль записывала сообщение об ошибке, когда оно неверно?
Ура!