gpt4 book ai didi

node.js - 在 swagger nodejs restful 应用程序中集成 Passport 中间件?

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:05 26 4
gpt4 key购买 nike

最近开始探索用于 nodejs express 应用程序的 swagger。据我了解,swagger 是一种框架,需要在 nodejs express 应用程序中遵循约定。 Swagger 使用 Controller 自动映射路由。

但我觉得,我失去了注入(inject)中间件(如用于身份验证的 Passport )的能力,它可以很容易地添加到用户定义的路由中。

我知道有一些方法可以用 swagger 注入(inject)中间件,但不知何故我觉得它不像没有 swagger 那样自然。

有没有一种方法可以在我的代码中使用带有最少 swagger 相关组件的 swagger - 可能只使用 swagger.yaml 文件?

我想避免使用 req.swagger.param 类型的代码,并希望利用标准方法来定义路由和注入(inject)中间件。

最佳答案

Swagger本身就是一个中间件。当您启动您的应用程序时,swagger 将使用 app.Use([swaggerMiddlewareObject]) 注册自己。因此,您可以在 swagger 之前/之后添加其他中间件。

请在下面找到评论部分。您必须根据您的身份验证策略更改它。

'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');
}
});

关于node.js - 在 swagger nodejs restful 应用程序中集成 Passport 中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38249546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com