这是我目前的护照认证机制
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的答案。
我认为你可以做的是在调用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
来请求并在验证回调中访问它。