0

根据 micronaut 文档 https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html#enableendpoints ,尝试在最新版本的 Micronaut 中进行 Swagger OAuth 配置

swagger-ui.oauth2RedirectUrl
swagger-ui.oauth2.clientId
swagger-ui.oauth2.clientSecret
swagger-ui.oauth2.realm
swagger-ui.oauth2.appName
swagger-ui.oauth2.scopeSeparator
swagger-ui.oauth2.scopes
swagger-ui.oauth2.additionalQueryStringParams
swagger-ui.oauth2.useBasicAuthenticationWithAccessCodeGrant
swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant

设置任何这些属性时,Micronaut 不仅会生成一个 swagger-ui/index.html 文件,还会生成一个 swagger-ui/oauth2-redirect.html 文件

我可以看到它已经使用以下代码创建了文件 oauth2-redirect.html

tasks.withType(JavaCompile).all {
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=swagger-ui.enabled=true,swagger-ui.theme=flattop,swagger-ui.oauth2RedirectUrl=http://localhost:8080/swagger-ui/oauth2-redirect.html,swagger-ui.oauth2.clientId=myClientId,swagger-ui.oauth2.scopes=openid,swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant=true'
}

对于 oauth2.clientId、oauth2RedirectUrl 和 oauth2.clientSecret,这些值对于每个环境 PROD、TEST、DEV、UAT 都不同。通过像上面的代码一样设置值,很难为每个环境进行配置。有没有更好的方法来做到这一点?

4

1 回答 1

0

在我的项目中,它是通过为每个环境创建不同的属性文件并使用参数控制编译来解决的

tasks.withType(JavaCompile) {
  String openapiPropertyFile = 'openapi/openapi-dev.properties'
  if(project.hasProperty("openapiPropertyFile")){
      openapiPropertyFile = project.property('openapiPropertyFile')
  }
  options.fork = true
  options.forkOptions.jvmArgs << "-Dmicronaut.openapi.config.file=$openapiPropertyFile"
}

然后你像这样构建它

$ sh ./gradlew clean jib -PopenapiPropertyFile=openapi/openapi-uat.properties -PimageSuffix=-uat

尽管我想知道如何进行此后期编译,因为在我的情况下,它会强制创建单独的 docker 映像,我想在其中创建一个并在之后挂载这些属性。

于 2021-11-17T14:36:31.900 回答