我的解决方案。需要定义一个中间件
./middleware/passport
export.swaggerPassport = function(passport) {
const applyPassport = passportService(passport);
return function(controller) {
const action = async (req, res, next) => {
const [err, user] = await applyPassport(req, res, next);
if (err) {
return errorResponse(res, err, 422);
}
controller.action(req, res, next);
};
return { spec: controller.spec, action };
}
};
../services/util.service
exports.swaggerPassport = function(passport) {
const applyPassport = passportService(passport);
return function(controller) {
const action = async (req, res, next) => {
const [err, user] = await applyPassport(req, res, next);
if (err) {
return errorResponse(res, err, 422);
}
controller.action(req, res, next);
};
return { spec: controller.spec, action };
}
};
然后把护照交给那里
server.js
const { passportStrategy, swaggerPassport } = require('./middleware/passport');
passportStrategy(passport);
const routePassport = swaggerPassport(passport);
当我们需要保护控制器动作时调用
swagger.addGet(routePassport(api.Dashboard.dashboard))
github 中提供的所有代码