java - Micronaut(Gradle 和 Java)-启用安全性后无法访问 Swagger 集成 View

标签 java swagger swagger-ui micronaut micronaut-openapi

按照此处的文档进行操作 - https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html

我将 build.gradle 配置为包含用于生成 swagger yaml 的编译时任务,如下所示 -

tasks.withType(JavaCompile){
options.fork = true
options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=rapidoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop'
options.encoding = "UTF-8"
options.compilerArgs.add('-parameters')}

这就是我的 application.yaml 的样子 -

micronaut:
   application:
    name: email-api
   server:
    port: 5655
    cors:
     enabled: true
   security:
     enabled: true
     token:
      jwt:
       enabled: true
       generator:
        accessTokenExpiration: 86400
       signatures:
        secret:
          generator:
            secret: Test@2020-Ok-Letus-chageit-later
   router:
    static-resources:
     swagger:
      paths: classpath:META-INF/swagger
      mapping: /swagger/**
     swagger-ui:
      paths: classpath:META-INF/swagger/views/swagger-ui
      mapping: /swagger-ui/**

就像文档所说,我还通过 Application.java 进行了注释,如下所示-

import io.micronaut.runtime.Micronaut;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Contact;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.info.License;

@OpenAPIDefinition(
    info = @Info(
            title = "Email Service",
            version = "0.0",
            description = "Email Service API",
            license = @License(name = "Apache 2.0", url = "https://foo.bar"),
            contact = @Contact(url = "https://gigantic-server.com", name = "Fred", email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b5f3c7d0d1f5d2dcd2d4d2d4dbc1dcd698c6d0c7c3d0c79bd6dad8" rel="noreferrer noopener nofollow">[email protected]</a>")
    )
)
public class Application {

public static void main(String[] args) {
    Micronaut.run(Application.class);
 }
}

完成所有这些操作后,当我尝试打开 http://localhost:5655/swagger/email-service-0.0.yaml 时它打开生成的开放 API 规范 yaml。但是,如果我尝试打开 http://localhost:5655/swagger-ui/ ,我收到 404。请注意,如果我将安全设置为 false 一切正常。

谁能帮我解决这个问题吗?

最佳答案

我遇到了同样的问题,但它适用于以下规则:

micronaut:
  security:
    enabled: true
    intercept-url-map:
      -
        pattern: /swagger-ui/**
        http-method: GET
        access:
          - isAnonymous() 

只需尝试使用两个 ** 而不是一个即可。

关于java - Micronaut(Gradle 和 Java)-启用安全性后无法访问 Swagger 集成 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62286864/

相关文章:

java - 无法在Java Servlet中读取Ajax发送的JQuery数据

c# - Swashbuckle - 未显示继承自 BaseController 的 Web API Controller

swagger - 更改默认版本 Swagger 位置

java - 使用 Play/Java-framework-2.5 配置 Swagger

java - 存储用于按 x,y 坐标定位的对象

java - 是否可以不使用预览布局的相机应用程序?

java - 动态配置spring的集成int-http :inbound-gateway

php - 如何在 swagger php 文档中指定默认的 json 值?

java - 使用全局类或java反射为play框架中的所有 Controller 添加注释

java - 打包到uber jar后Swagger不工作