更改后重新处理请求
Re-handle request after changes
我正在尝试以通用方式使用 passport.js
,在调用 authenticate
之前更改配置,但之后我找不到将请求重定向到它的方法。
我这样处理请求:
入口点:
app.get('/authorize/:clientId/:network', authUtils.authorize);
处理程序:
async function authorize(request, response, next) {
try {
let clientId = request.params.clientId;
let network = request.params.network;
config = await databaseUtils.getConfig(clientId, network);
if(typeof(config) !== 'undefined') {
passport.use(new FacebookStrategy({
clientID: config.appId,
clientSecret: config.appSecretKey,
callbackURL: 'https://127.0.0.1/' + network + '/authCallback/'
}, function(accessToken, refreshToken, profile, cb) {
return {accessToken, refreshToken, profile, cb};
}));
// Here's where I should re-handle request
passport.authenticate(network);
} else {
throw new Error(network + ' is not configured');
}
} catch (e) {
throw e;
}
}
我确信使用 passport.authenticate('network')
作为请求处理程序是可行的,但我想使其通用,以便我可以使用不同的社交网络。
有没有办法 "re-handle" NodeJS/Express 中的请求?
由于中间件的所有步骤都应该 return 具有 3 个参数的函数,也许您可以使用这 3 个参数调用它 returns:
return passport.authenticate(network)(request, response, next);
我正在尝试以通用方式使用 passport.js
,在调用 authenticate
之前更改配置,但之后我找不到将请求重定向到它的方法。
我这样处理请求:
入口点:
app.get('/authorize/:clientId/:network', authUtils.authorize);
处理程序:
async function authorize(request, response, next) {
try {
let clientId = request.params.clientId;
let network = request.params.network;
config = await databaseUtils.getConfig(clientId, network);
if(typeof(config) !== 'undefined') {
passport.use(new FacebookStrategy({
clientID: config.appId,
clientSecret: config.appSecretKey,
callbackURL: 'https://127.0.0.1/' + network + '/authCallback/'
}, function(accessToken, refreshToken, profile, cb) {
return {accessToken, refreshToken, profile, cb};
}));
// Here's where I should re-handle request
passport.authenticate(network);
} else {
throw new Error(network + ' is not configured');
}
} catch (e) {
throw e;
}
}
我确信使用 passport.authenticate('network')
作为请求处理程序是可行的,但我想使其通用,以便我可以使用不同的社交网络。
有没有办法 "re-handle" NodeJS/Express 中的请求?
由于中间件的所有步骤都应该 return 具有 3 个参数的函数,也许您可以使用这 3 个参数调用它 returns:
return passport.authenticate(network)(request, response, next);