Passport Local Strategy 无法检索特定的用户数据,而它会从 table 中提供第一个用户数据

Passport Local Strategy is not working to retrieve the specific user data, while it gives the first user data from the table

我正在使用 Passport Local Strategy 从用户 table 验证特定用户,然后获取该用户数据以查看:

passport.use(new LocalStrategy(
  function (username, password, done) {
    User.findOne({ where: { username } })
      .then(function (user) {
        if (!user) {
          return done(null, false);
        }
        else {
          if (user.password != password) {
            return done(null, false);
          }
        }
        return done(null, user);
      });
  }));

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

passport.deserializeUser(function (username, done) {
  User
    .find({ username: username })
    .then(function (user) {
      done(null, user);
    });
});

从本地护照获取 isAuthenticated 并将其传递给索引路由:

router.get('/', function (req, res) {
  res.render('index', {
    title: 'Title',
    isAuthenticated: req.isAuthenticated(),
    user: req.user
  });
});

登录路径:

router.get('/login', function (req, res) {
  res.render('login', { title: 'Sign in' });
});

router.post('/login', passport.authenticate('local'), function (req, res) {
  res.redirect('/');
});

但是,当用户登录时,它会对用户进行身份验证并将其带到索引页面,但它会在索引页面欢迎消息中显示数据库中的第一个用户名 table。它不显示当前用户名。

这是索引页:

extends layout

block content

  h1(id='title')= title
  p Welcome to #{title}
  if !isAuthenticated
    a(href="login") Sign in
    p
    a(href="signup") Create an account
  else 
    p Welcome #{user.username}  
    a(href="Logout") Logout

deserializeUser 函数中将 User.find({ username: username }) 更改为 User.find({ where: {username: username} })