passportJS, req.isAuthenticated () всегда на один шаг позади при входе в систему и регистрации - PullRequest
0 голосов
/ 14 апреля 2019

У меня сейчас проблема с passportJS.Я использую шаблон для отображения страниц (EJS).Вход и регистрация всегда на один шаг позади, так как у меня другая навигационная панель, когда пользователь вошел в систему. Как только я нажимаю кнопку подтверждения с правильными учетными данными на странице входа в систему, она не обновляет панель навигации, на которую перенаправляется пользователь.Мне нужно либо обновить страницу, либо щелкнуть другую ссылку в приложении.

passport.use(
  new LocalStrategy(
    {
      usernameField: "email",
      passwordField: "password"
    },
    function(email, password, done) {
      knex
        .select("*")
        .from("users")
        .where({ email })
        .first()
        .then(user => {
          if (!user) return done(null, false);
          const hash = user.password;
          bcrypt.compare(password, hash, function(err, res) {
            if (res === true) {
              return done(null, user);
            } else {
              return done(null, false);
            }
          });
        })
        .catch(err => {
          return done(err);
        });
    }
  )
);

app.post('/login', passport.authenticate(
  'local'), function(req, res, next) {
    if(req.user.id) {
      res.locals.isAuthenticated = req.isAuthenticated();
      console.log("===========> working", res.locals.isAuthenticated)
      res.locals.user = req.user;
      console.log("===========> working", res.locals.user)
      res.redirect('/')
    } else {
      res.redirect('/login')
    }
  }
);

app.use(function(req, res, next) {
  res.locals.isAuthenticated = req.isAuthenticated();
  res.locals.user = req.user;
  console.log(res.locals.isAuthenticated, res.locals.user)
  next();
});

Выше приведен код с локальной стратегией.Два файла console.logs с «======> working» показывают «true» и пользовательский объект с правильными учетными данными и выполняет правильное перенаправление.

Однако вторая функция показывает «false», не определенопока я не обновлюсь.

Есть мысли о том, где может быть проблема?Большое спасибо!

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