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

时间:2019-04-30 11:51:05

标签: node.js express passport.js

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

random.choice(char1)

我的策略定义如下:

reply = comment.body
while phrase in reply:
     random_choice = random.choice(char1)
     reply.replace(phrase, random_choice, 1) #extra argument to only replace first occurence

现在,我需要将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

使实施@Saurabh的答案更加容易。

1 个答案:

答案 0 :(得分:1)

我认为您可以做的是在调用身份验证时传递此选项'passReqToCallback'

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

这会将请求传递给您的验证回调,例如

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

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