我正在使用swagger 3.0,并且在swagger文档中有多个端点。
我希望用户不要每次都在授权按钮处输入凭据。
我是否可以在index.html或yaml文件中包含身份验证以自动授权用户。
感谢。
答案 0 :(得分:1)
Swagger UI 3.13.0+为此提供了preauthorizeBasic
方法。假设您的API定义包含Basic auth的安全方案:
swagger: '2.0'
...
securityDefinitions:
basicAuth:
type: basic
security:
- basicAuth: []
您可以指定Basic auth的默认用户名和密码,如下所示:
// index.html
const ui = SwaggerUIBundle({
url: "https://my.api.com/swagger.yaml",
...
onComplete: function() {
// "basicAuth" is the key name of the security scheme in securityDefinitions
ui.preauthorizeBasic("basicAuth", "username", "password");
}
})
现在,如果您单击Swagger UI中的“授权”按钮,您将看到用户名和密码已预先填写。
您可以将requestInterceptor
添加到Swagger UI的 index.html 文件中,以便自动添加Authorization
标头以“试用”请求。 Swagger UI 3.1.6及更高版本支持requestInterceptor
。
// index.html
const ui = SwaggerUIBundle({
url: "http://my.api.com/swagger.yaml",
...
requestInterceptor: (req) => {
if (! req.loadSpec) {
// Add the header to "try it out" calls but not spec fetches
var token = btoa("username" + ":" + "password");
req.headers.Authorization = "Basic " + token;
}
return req;
}
})