Node.js 如何确保swagger文档访问的安全性

Node.js 如何确保swagger文档访问的安全性,node.js,swagger,Node.js,Swagger,我已经为我的api创建了一个招摇过市的文档,但是我不想为每个人公开文档url,我想保护此路由:mydomain.com/api-docs仅适用于具有特定令牌(例如:admin)的用户,我有一个中间件在控制器的任何操作之前检查用户角色,所以我的问题是如何保护此路由: app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocs)); 我已经尝试过这样使用,但没有成功: app.use("/api-docs",my_Middle

我已经为我的api创建了一个招摇过市的文档,但是我不想为每个人公开文档url,我想保护此路由:mydomain.com/api-docs仅适用于具有特定令牌(例如:admin)的用户,我有一个中间件在控制器的任何操作之前检查用户角色,所以我的问题是如何保护此路由:

app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocs));
我已经尝试过这样使用,但没有成功:

app.use("/api-docs",my_Middleware, swaggerUi.serve, swaggerUi.setup(swaggerDocs));

// Middleware
...
const payload = jwt.decodeToken(token);
const user = User.findOne({ _id: payload.id });
const role = user.role;
if(role !== "admin") { ... // throws an error here }
req.user = user;
next()
....

你能展示我的_中间件的代码吗?嘿,谢谢你的回复,中间件太长了,但我修改了帖子,向你展示了正确使用User.findOne而不使用async的重要部分?这段代码仍然不能展示你如何抛出错误嗨,没有抛出错误,我只能用中间件访问doc事件你能显示我的_中间件的代码吗?嘿,谢谢你的回复,中间件太长了,但我修改了帖子,向你展示了正确使用User.findOne的重要部分没有异步?这段代码仍然不能显示你如何抛出错误嗨,没有抛出错误,我只能通过中间件访问doc事件