Странное поведение nodejs при входе в систему пользователя - PullRequest
1 голос
/ 20 октября 2019

Проблема в том, что он показывает, что он успешно вошел в систему (201) без кода перенаправления, но при этом он показывает ошибку 302 и адрес электронной почты не определен. В чем может быть проблема здесь? Я все еще не могу прийти к выводу.

Проблема может быть в порядке кода, который я предполагаю?

const login = async (req, res, next) => {

const { email_address, password, user_email, user_password}: { email_address: string, password: string, user_email: string, user_password: string } = req.body;

try {
  const userWithDetails = 'SELECT * FROM users WHERE email_address = user_email AND password = user_password'; //w form info 
  if (userWithDetails) {
  req.session.loggedin = true; //true
  req.session.email_address = email_address; //undefined
    console.log(req.session.email_address)
  // return res.redirect('./index.html')
}
  res.status(201).send('Succesfully signed in');
    // res.status(403).send('Password is not correct');
} catch(error) {
    res.status(404).send(`User with email ${email_address} not found!`);   
}

  await next;
};

НОВЫЙ КОД ***

const login = async (req, res, next) => {

const { email_address, password}: { email_address: string, password: string} = req.body;

  const userWithDetails = 'SELECT * FROM users WHERE email_address = ?';
  return con.query(userWithDetails, email_address, (err, results) => {
    if (err) {
      console.error(err);
    }
    const user = results.find(emailObj => emailObj.email_address === email_address);
      if (results && results.length && user.email_address) {
        req.session.loggedin = true;
        req.session.email_address = email_address;
        const matchPassword: boolean = bcrypt.compareSync(password, user.password);
        if (matchPassword) {
          const token = jwt.sign({ user }, 'aaaa', { expiresIn: '1h'});
          res.status(200).send({message: 'Logged in', token: token});

        } else {
          res.status(403).send('Password is not correct');
        }

      } else {
        res.status(404).send(`User with email ${email_address} not found!`);   
      } 
});
await next;

}

1 Ответ

0 голосов
/ 20 октября 2019

Вы не выполняете свой SQL-запрос в любой момент.

Вы просто говорите:

query = 'select blabla'
if(query){...}

Конечно, это всегда будет так. Вы хотите выполнить запрос к своей базе данных.

Также в своем запросе вы не используете переменные должным образом, см. Форматирование строк:

let my_var = `SELECT xxx from xxx where username = '${username}'`

Также, пожалуйста, санируйте параметры, чтобы предотвратить SQLИнъекции ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...