我使用Luminus以及reitit和swagger-ui生成了一个页面,可让我试用Luminus API。我可以输入我的API请求正文并提交以测试我的API。现在,我使用伙伴添加了身份验证,并且我的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]}
...看起来好像我在正确的轨道上,但是我仍然无法在auth标头中输入我的令牌。
正如我说的,一切都在使用curl ...只是那张招摇没有显示任何添加auth标头的方法。有人知道如何在这种情况下使用Swagger UI吗?
如果reitit不支持此功能,那么人们如何使用Swagger UI进行经过身份验证的请求?
任何帮助将不胜感激!
确定。解决了。
在我的API路由的根目录(封装了所有可能使用此身份验证最终结束的路由),我添加了:securityDefinitions。
["/api"
{:swagger {:id ::api
:securityDefinitions {:apiAuth
{:type "apiKey"
:name "Authorization"
:in "header"
}}}
在特定路线内:
:middleware [authenticated?]
:swagger {:security [{:apiAuth []}]}