微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在显示我的招摇之前要求提供凭据

如何解决在显示我的招摇之前要求提供凭据

我正在尝试为我的API添加安全性。我已经使用node.js创建了API,并使用了express和swagger-ui-express模块​​。问题是任何人都可以访问该端点。因此,为解决此问题,我想在显示大量内容之前添加一个基本的身份验证。

enter image description here

在端点上实现基本身份验证的示例:

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 举报,一经查实,本站将立刻删除。