使用带有用户名和密码的swagger-codegen基本身份验证

tom*_*msv 3 django swagger swagger-codegen

我有一个django rest_framework API,Swagger和一个Swagger UI.当我没有登录时,我可以看到"登录"和"文档"的非常有限的视图.当我登录时,我可以看到很多东西.

我正在尝试使用swagger-codegen生成客户端:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
generate -i http://127.0.0.1:8080/api/docs/ -l python -o myclient
Run Code Online (Sandbox Code Playgroud)

但是,它只生成一个非常有限的客户端,提供"登录"和"文档"功能.

如何让swagger-codegen知道如何使用http基本身份验证登录,以便生成更完整的客户端?

文档说我应该做以下,但我不知道它的期望:

    -a <authorization>, --auth <authorization>
        adds authorization headers when fetching the swagger definitions
        remotely. Pass in a URL-encoded string of name:header with a comma
        separating multiple values
Run Code Online (Sandbox Code Playgroud)

moo*_*isy 12

由于您使用的是http基本身份验证,因此该命令应为:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
generate -i http://127.0.0.1:8080/api/docs/ -l python -o myclient -a "Authorization:Basic QWxhZGRpbjpPcGVuU2VzYW1l"
Run Code Online (Sandbox Code Playgroud)

哪里QWxhZGRpbjpPcGVuU2VzYW1l是你username:password的base64编码.

在这里,您可以查看将解析此选项的代码.

  • 您可以使用[此站点](https://www.base64encode.org)使用以下格式对凭据进行编码:`username:password`. (2认同)
  • 当然,必须有某种方法来提供凭据,而无需将其硬编码到源代码生成过程中。除了不安全之外,这是否意味着如果密码更改,我们需要重新生成并重新编译我们的代码? (2认同)