【问题标题】:passportjs custom callback code flowpassportjs 自定义回调代码流程
【发布时间】:2016-08-07 15:59:20
【问题描述】:

我是新来的passportJS,想看懂这段代码:

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

有人可以向我解释一下这段代码的流程吗?以及(req, res, next); 在 passport.authenticate 函数的末尾做了什么?

我也已经阅读了this 的问题,但还是不明白。

【问题讨论】:

  • 好吧,它处理“登录”的路由,并尝试在本地级别进行身份验证,如果遇到任何错误,它会显示相同的内容,如果用户未通过身份验证,则将他重定向到登录,否则他将被重定向到\users 路由/页面。 (req, res, next) 实际上是您传递给函数参数的值。
  • "(req, res, next) 实际上是您传递给函数参数的值。"对不起,你的意思是什么功能?
  • 所以 (req, res, next);是否包含登录回调?如果是正确的(req,res,next)与passport.authenticate函数相关的函数是什么?

标签: javascript node.js passport.js


【解决方案1】:
passport.authenticate()(<args>);

passport.authenticate() 返回一个可以有三个参数的函数(req,res,next)。您询问的代码/参数是这些参数,它们传递给passport.authenticate() 返回的函数检查authenticate.js code on GitHub

但是,我不太清楚护照对字符串local 的作用。我想知道:

  1. 传递local 字符串是否足以让 Passport 了解 应用认证机制?
  2. 在遇到使用local 策略后,passport 会做什么(以及如何)?

【讨论】:

  • 似乎在定义护照策略时,例如passport.use('strategyname', new StrategyClass());我们声明策略的名称。这个名字后来用在 passport.authenticate('strategyName', ..);
猜你喜欢
  • 1970-01-01
  • 2014-06-24
  • 2013-12-10
  • 1970-01-01
  • 2017-11-06
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多