kir*_*ran 4 node.js express swagger passport.js
最近开始为Node.js Express应用程序探索swagger。据我了解,swagger是一种框架,需要在nodejs express应用中遵循约定。Swagger使用控制器自动映射路线。
但是我感到,我失去了注入中间件(如通行证)以进行身份验证的功能,可以轻松将其添加到用户定义的路由中。
我知道有一些方法可以让中间人大张旗鼓地注入,但是不知何故,我觉得它没有自然而然地变得不那么自然。
有没有办法可以在代码中使用包含最少的swagger相关组件的swagger-可能仅使用swagger.yaml文件?
我想避免使用req.swagger.param类型的代码,并希望利用标准方法来定义路由和注入中间件。
小智 5
Swagger本身是一种中间件。启动应用程序时,swagger将使用app.Use([swaggerMiddlewareObject])注册自己。因此,您可以在摇摇欲坠之前/之后添加其他中间件。
请在下面找到评论的部分。您必须根据身份验证策略进行更改。
'use strict';
var SwaggerExpress = require('swagger-express-mw');
var app = require('express')();
var passport = require('passport');
module.exports = app; // for testing
var config = {
appRoot: __dirname // required config
};
/*Mount your passport Middleware here using app object. As your are building a stateless restful api, I assume you would use jwt
* 1. import jwt-strategy.
* 2. Configure passport to use jwt strategy.
* 3. app.use(passport.initialize());
* 4. app.use('/pathYouWantProtect', passport.authenticate('jwt-strategy'),function(req,res,next){
*
* });
*/
SwaggerExpress.create(config, function(err, swaggerExpress) {
if (err) { throw err; }
// install middleware
swaggerExpress.register(app);
var port = process.env.PORT || 10010;
app.listen(port);
if (swaggerExpress.runner.swagger.paths['/hello']) {
console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |