我正在使用Authorization
标头参数接收我的API安全令牌,如下所示:
Authorization: Bearer <SomeVeryLongTokenThatALegitLoginBegat>
好消息是我的节点服务器接收了param allright;我在args.Authorization.originalValue
中生成的服务器存根中的每个服务的每个方法中都以/controllers
的形式收到它。坏消息是我有大量的API端点,我想在请求被路由到控制器之前对请求进行授权。
从我读到的内容来看,swagger-security中间件应该是这样做的,但我无法让它工作(似乎根本没有进入该代码流;请参阅下面的内容试过$SWAGGER_API_HOME/index.js
)。
// code snippet from $SWAGGER_API_HOME/index.js
app.use(middleware.swaggerSecurity({
Authorization: function (req, def, scopes, callback) {
console.log ('INDEX.JS RECEIVED SOMETHING', req);
callback();
}
}));
对于/controllers/
中文件中的每个方法,我现在这样做很烦人;这种重复方式的一个例子如下:
exports.userSomethingDELETE = function(args, res, next) {
/**
* Do something for user
* authorization String
* something SomethingDetails
* no response value expected for this operation
**/
console.log (args.Authorization.originalValue.substring(7));
var promiseOfAuthentication = performMyOwnAuthentication (args.Authorization.originalValue.substring(7));
promiseOfAuthentication.then (...)
...
}
我有很多方法(总共约500个),所以做上述操作非常糟糕。我希望req
对象由一个auth方法解析,并在它被路由到正确的控制器之前批准。有没有办法做到这一点?任何帮助表示赞赏。
谢谢!