node.js - 您可以在不重定向的情况下使用 Passport 进行身份验证吗?

标签 node.js passport.js passport-local

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

  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});
  });

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

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

最佳答案

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

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 对象中,您可以找到所有需要的错误,这些错误在身份验证时出现。

关于node.js - 您可以在不重定向的情况下使用 Passport 进行身份验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26859349/

相关文章:

node.js - 如何在mongodb中实现事务回滚?

Javascript:如何在不创建循环依赖的情况下重用创建子实例的方法

Angular 7 未按要求发送正确的 header

javascript - nestjs 中的可选身份验证

javascript - 如何在 passport-twitter 策略中使用 session 变量 req.user

mysql - 本地护照与 mysql 不工作

node.js - 这是在平均堆栈上进行数据库搜索的最佳方法

node.js - Zoho CRM - Nodejs 集成 : Get more than 20 leads-contacts-potentials with a module

node.js - 显示其他人的用户资料

angularjs - 使用 Passport 对 API 端点进行身份验证