繁体   English   中英

为什么isAuthenticated在成功登录用户后在passport.js本地策略中返回false

[英]Why isAuthenticated return false in passport.js local strategy after successful login the user

我有以下代码通过护照本地策略进行身份验证:

    
routes.post("/login", passport.authenticate("local"), (req, res) => {
  res.json(req.user);
});

function ensureAuth(req, res, next) {
  console.log(req.isAuthenticated());
  if (req.isAuthenticated()) {
    next();
  } else {
    req.flash("info", "You must be logged in to see this page");
    res.redirect("/login");
  }
}

routes.get("/edit", ensureAuth, (req, res) => {
  res.sendStatus(200);
});

routes.post("/edit", ensureAuth, (req, res, next) => {
  req.user.username = req.body.username;
  req.user.bio = req.body.bio;
  req.user.email = req.body.email;

  req.user.save((err) => {
    if (err) {
      return next(err);
    } else {
      res.send({
        success: "true",
        info: "Profile updated",
      });
    }
  });
});

我不明白为什么会这样? 为什么不会认证?

我看不到您的护照本地配置,我发送了一个通过本地护照进行本地身份验证的示例,希望对您有所帮助:) 登录路线:

router.post('/login', loginController.process);

controller loginController.process

async process(req, res, next) {
        try {
            passport.authenticate('local.login', async (err, user) => {
                // User not Exist
                if (!user) return this.back(req, res);
                req.logIn(user, (err) => {
                    if (req.body.remember) {
                        user.setRememberToken(res);
                    }
                    return res.redirect('/');
                });
            })(req, res, next);
        } catch (e) {
            next(e);
        }
    }

}

护照配置:

passport.use('local.login', new localStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true,
}, async (req, email: string, password: string, done) => {
    // Select User Where email
    const user = await userService.findOne({email});
    // Check user Exist or Incorrect Password
    if (!user || !user.comparePassword(password)) return done(req.flash('global_error', req.__('typeScript.app.passport.passport-local.wrong')), null);
    done(null, user);
}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM