如何获得Swagger UI以提供身份验证标头?

问题描述 投票:0回答:1

我使用Luminus以及reitit和swagger-ui生成了一个页面,可让我试用Luminus API。我可以输入我的API请求正文并提交以测试我的API。A snapshot of my swagger UI现在,我使用伙伴添加了身份验证,并且我的API需要在请求的标头中传递令牌,否则它将被拒绝为拒绝请求。我正在尝试获取一个“授权”标头字段以使其神奇地出现在我的UI中,以便我可以输入JWT令牌字符串并测试我的API。对于使用reitt创建API的任何人来说,这必须是一个非常普遍的要求,但是我不知道该怎么做。我到处搜寻,发现this reitit issues page,其中包含文字...

Header参数被声明为小写字符串{:headers {“ authorization” string?}},它将与Ring为我们提供的内容完全匹配。 (仍然可以使用HTTP-Header-Case来获取文档。)

...并建议以下设置...

:get {:summary "list offers"
      :parameters 
        {:headers 
          {"authorization" string?}}
         ... etc

这样做并没有使我进行身份验证的任何方式。因此,我找到了this discussion并通过在上述路线的:summary和:parameters之后添加以下内容来编辑路线...

             :middleware [authenticated?]
             :swagger {:security [:apiKey]}

添加完之后,我得到了...enter image description here

...看起来好像我在正确的轨道上,但是我仍然无法在auth标头中输入我的令牌。

正如我说的,一切都在使用curl ...只是那张招摇没有显示任何添加auth标头的方法。有人知道如何在这种情况下使用Swagger UI吗?

如果reitit不支持此功能,那么人们如何使用Swagger UI进行经过身份验证的请求?

任何帮助将不胜感激!

authentication clojure swagger-ui luminus reitit
1个回答
0
投票

确定。解决了。​​

在我的API路由的根目录(封装了所有可能使用此身份验证最终结束的路由),我添加了:securityDefinitions。

  ["/api"
   {:swagger {:id ::api
              :securityDefinitions {:apiAuth
                                             {:type "apiKey"
                                              :name "Authorization"
                                              :in "header"
                                              }}}

在特定路线内:

             :middleware [authenticated?]
             :swagger {:security [{:apiAuth []}]}
© www.soinside.com 2019 - 2024. All rights reserved.