一尘不染

您可以通过Passport进行身份验证而无需重定向吗?

node.js

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

  app.post('/api/login', passport.authenticate('local-login', {
    successRedirect : '/api/login/success',
    failureRedirect : '/api/login/error',
    failureFlash : true
  }));
  app.get('/api/login/error', function(req, res) {
    res.send(401, {error: req.flash('loginMessage')});
  });
  app.get('/api/login/success', function(req, res) {
    res.send(200, {user: req.user});
  });

但是,理想情况下,我想从一条快速路径处理错误和成功消息,而不是重定向到两条额外的路径。

这可能吗?我尝试使用“自定义回调”,但由于某种原因似乎在序列化用户时出错。


阅读 204

收藏
2020-07-07

共1个答案

一尘不染

您可以使用自定义回调,例如:

passport.authenticate('local', function (err, account) {
    req.logIn(account, function() {
        res.status(err ? 500 : 200).send(err ? err : account);
    });
})(this.req, this.res, this.next);

在err对象中,您可以找到所有必需的错误,这些错误在身份验证时出现。

2020-07-07