首页 > 解决方案 > 我如何在 swagger/nodejs 中检查不记名令牌

问题描述

我使用招摇,我今天添加身份验证。但是,即使我写了“a”或“abc”之类的任何字母,或者它仍然输入的内容。如何检查它是否是使用 swagger 的真实令牌?我的代码:

const options = {
  definition: {
    openapi: "3.0.0",
    info: {
      title: "İlaç Takip Sistemi API",
      version: "2.0.0",
      description: "ITS API Swagger",
    },
    servers: [
      {
        url: "http://localhost:3100",
      },
    ],
    components: {
      securitySchemes: {
        bearerAuth: {
          type: "apiKey",
          name: "x-auth-token",
          scheme: "bearer",
          in: "header",
        },
      },
    },
    security: [
      {
        bearerAuth: [],
      },
    ],
  },
  apis: ["./app/routes.js"],
};
const specs = swaggerJsDoc(options);
app.use("/swagger", swaggerUI.serve, swaggerUI.setup(specs));

这就是我检查令牌的方式:

jwt.verify(req.token, process.env.SECRETKEY, (err, authData) => {
      if (err) {
        res.sendStatus(401);
      } else {
        res.json(authData);
      }
    });

标签: javascriptnode.jsapiswaggerswagger-ui

解决方案


当我将我的令牌写成招摇时,然后在那里做我的工作,但是当我从招摇中尝试时,它说未经授权,即使我的令牌也是真实的,并且在我尝试使用邮递员时正在工作。

更改您的安全方案如下:

        bearerAuth: {
          type: "http",
          scheme: "bearer",
        },

这样,“Bearer”前缀将自动添加到您在 Swagger UI 中输入的令牌中。

type: "apiKey"用于 Bearer 身份验证时,您必须在令牌值中包含“Bearer”前缀,即像Bearer abc123在 Swagger UI 中一样输入令牌。


推荐阅读