如何解决在显示我的招摇之前要求提供凭据
我正在尝试为我的API添加安全性。我已经使用node.js创建了API,并使用了express和swagger-ui-express模块。问题是任何人都可以访问该端点。因此,为解决此问题,我想在显示大量内容之前添加一个基本的身份验证。
在端点上实现基本身份验证的示例:
app.get('/users',(req,res) => {
let user = auth(req)
if (user === undefined || user['name'] !== 'admin' || user['pass'] !== 'adminpass') {
res.statusCode = 401
res.setHeader('WWW-Authenticate','Basic realm="Node"')
res.end('Unauthorized')
} else {
res.status(200).send('Return all users');
}
});
我想在swagger的端点中添加相同的示例:
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
const swaggerDocument = YAML.load('./swagger.yaml');
const swaggerOptions = {
swaggerDeFinition: {
info: {
version: "1.0.0",title: "Customer API",description: "Customer API information",contact: {
name: "Amazing Developer"
},servers: ["http://localhost:3000"]
}
},// ['.routes/*.js']
apis: ["index.js"]
};
const swaggerDocs = swaggerJsDoc(swaggerOptions);
app.use('/api-docs',swaggerUi.serve,swaggerUi.setup(swaggerDocument));
有人可以帮助我吗?我试图这样做,但是没有用。我什至不知道是否可能。
解决方案:
app.use('/api-docs',function(req,res,next){
let user = auth(req)
if (user === undefined || user['name'] !== 'admin' || user['pass'] !== 'adminpass') {
res.statusCode = 401
res.setHeader('WWW-Authenticate','Basic realm="Node"')
res.end('Unauthorized')
} else {
next();
}
},swaggerUi.setup(swaggerDocument));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。