如何通过.authenticate将变量传递给护照策略?

问题描述 投票:1回答:1

这是我目前的护照认证机制

const requireAuth = passport.authenticate('jwt', { session: false });

我的策略定义如下:

passport.use('jwt', new Strategy(options, (payload, done) => {
    // my logic
}))

现在,我需要将requireAuth更改为:

function requireAuth(allowProxyLogin) {
    return passport.authenticate('jwt', { session: false })
}

现在,我需要将这个allowProxyLogin变量传递给我的策略。我怎么能这样做,对策略的改动很小?

编辑:

为了记录,我将requireAuth函数更改为:

function requireAuth(allowProxyLogin) {
  return [
    (req, res, next) => {
      req.allowProxyLogin = !!allowProxyLogin;
      return next();
    },
    passport.authenticate('jwt', { session: false, passReqToCallback: true }),
  ];
}

为了更容易实现@ Saurabh的答案。

node.js express passport.js
1个回答
1
投票

我认为你可以做的是在调用authenticate时传递这个选项'passReqToCallback'

function requireAuth(allowProxyLogin) {
    return passport.authenticate('jwt', { session: false, passReqToCallback: true })
}

这会将请求传递给您的验证回调,就像这样

passport.use('jwt', new Strategy(req, options, (payload, done) => {
    // my logic
}))

现在,您可以添加变量allowProxyLogin来请求并在验证回调中访问它。

© www.soinside.com 2019 - 2024. All rights reserved.