【问题标题】:Callback not being called for passport-amazon没有要求回调护照 - 亚马逊
【发布时间】:2017-01-16 23:55:30
【问题描述】:

我在快速服务器的路由上有一个passport-amazon 策略(为简洁起见,我已经从回调中删除了用户处理代码):

passport 在 server.js 中被初始化:

//configure passport
app.use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);

护照策略添加在require('./config/passport')(passport):

passport.use(
  new AmazonStrategy({
    clientID: process.env.AMAZON_CLIENT_ID,
              clientSecret: process.env.AMAZON_CLIENT_SECRET,
              callbackURL: process.env.AMAZON_CALLBACK_URL
          },
     (accessToken, refreshToken, profile, done) => {
       console.log('in the callback for amazon auth');
       //user handling code here
       return done(null, user);

);

路线:

routes.get(
        '/login',
        passport.authenticate(
            'amazon',
            {
                scope: ['profile']
            }
        ),
        (req, res) => {
          console.log('something happens here');
        }
      )

身份验证进入亚马逊并使用回调 URL。我在回调 url 路由上的中间件:

function isLoggedIn(req, res, next) {
        if (req.isAuthenticated())
            return next();

        res.redirect('/');
}

正在被调用,req.isAuthenticated()false。护照回调函数从不登录到控制台。

【问题讨论】:

  • 您还没有在亚马逊护照中间件中使用done返回用户
  • 我删除了该示例中的代码部分以保持整洁。问题是该函数甚至从未被调用过。该日志语句永远不会执行。
  • 我唯一想到的是你没有初始化护照
  • 我在问题中添加了护照初始化。
  • 我在控制台消息中添加了 process.nextTick(() => {}) ,但仍然一无所获。

标签: node.js express passport.js


【解决方案1】:

您的 isLoggedIn 中间件是错误。您不应该在回调 url 中检查身份验证,因为那时还没有 user

您可以将用户重定向到回调路由中的安全路由,并在该路由上使用isLoggedIn 中间件。

【讨论】:

  • 我添加了一个没有中间件检查的中间路由,并重定向到受中间件保护的路由。同样的问题,护照策略回调永远不会登录到控制台。
  • @Lunchbox 你的亚马逊回调有isLoggedIn 中间件吗?
  • @Lunchbox 哦,我看到你现在解决了你的问题。酷
【解决方案2】:

我使用example code 发现了问题。我需要在中间回调路由上进行另一个身份验证调用:

routes.get(
      '/amazon/auth/callback', 
      passport.authenticate('amazon', {failureRedirect: '/'}),    
      (req, res) => {
        console.log("at /amazon/auth/callback");
        res.redirect('/highlights');
    });

这会执行护照回调并且isLoggedIn方法通过。

感谢 Ebrahim Pasbani 的帮助并一直陪伴在我身边。

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2016-11-26
    相关资源
    最近更新 更多