node JS паспорт При проверке информации о членстве в операторе if возникает ошибка - PullRequest
1 голос
/ 03 августа 2020

При проверке информации о членах через sql ошибка не возникает, если в части done один или два раза присутствует тег ha sh. Однако, если вы добавите выполненную часть 3 ниже как оператор else, появится сообщение «ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту». Есть решение?

app.get('/login', (req, res) => {
    res.render('login');
});

passport.serializeUser(function(user, done) {
  done(null, user.key);
});

passport.deserializeUser(function(id, done) {
  let sql = 'SELECT * FROM users';
    conn.query(sql, (err, users) => {
      for (let i = 0; i < users.length; i++) {
        if(users[i].key === id) {
          return done(null, users[i]);
        }
      }
    });
});


/* passport local callback */
passport.use(new LocalStrategy(
  function (username, password, done) {
    let uid = username;
    let pwd = password;
    /* Check member information */
    let sql = 'SELECT * FROM users';
    conn.query(sql, (err, users) => {
      for (let i = 0; i < users.length; i++) {
        if(uid === users[i].id) {
          if(pwd === users[i].password) {
            done(null, users[i]); // *** 1 ***
          } else {
            done(null, false); // *** 2 ***
          }
        } else {
          done(null, false); // here is the error *** 3 ***
        }
      }
    })
  }
));

/* passport local login */
app.post('/login',
  passport.authenticate(
    'local', 
    {
      successRedirect: '/friends',
      failureRedirect: '/login',
      failureFlash: true
    }
  )
);
...