首页 > 解决方案 > 为什么我的 MERN / Passport 用户登录不会在成功时重定向?

问题描述

输入正确的登录信息时,它什么也不做。没有错误日志或重定向。

router.post("/login", (req, res, next) => {
  passport.authenticate(
    "local",
    { successRedirect: "/dashboard" },
    (err, user, done) => {
      if (!user) {
        return res.json(done);    //sends error msg ("email not registered", "password incorrect", etc.)
      }
    }
  )(req, res, next);
});

这可能是什么问题?

标签: node.jsreactjsexpresspassport.js

解决方案


passport.authenticate接受 2 个参数。如果您选择自定义回调,则删除{ successRedirect: "/dashboard" }. 代码示例:

app.get('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }
    req.logIn(user, function(err) {
      if (err) { return next(err); }
      return res.redirect('/users/' + user.username);
    });
  })(req, res, next);
});

推荐阅读