我正在使用 Swagger UI 3.0 调用此处列出的端点 API。要调用 api,我必须在标头中添加身份验证。我们使用 javascript 将身份验证添加到 swagger UI,这将全局身份验证添加到 swagger UI 2.0 版本的 swagger UI 中的所有 API。这样,我就不必单击 swagger UI 中的“授权”按钮来在标头中添加身份验证令牌。
但最近我们转向了新的 swagger 版本 3.0。
结果,这个 javascript 不再工作了。
有没有办法在 Swagger UI 3.0 中使用任何 javascript 添加 Bearer auth 标头,而不是单击“授权”按钮。
我问这个问题是因为每次我打开 swagger UI 来调用 API 时手动添加身份验证真的很烦人。
I don't want to click this below authorize button to add Auth header. Instead I want to add this using some javascirpt.
纯javascript方式操作swaggerUI Reactjs授权表单并设置承载令牌:(来自浏览器控制台,在chrome中测试)
let jwtToken = "YOUR_JWT_TOKEN"; //just token without 'Bearer ' prefix
let openAuthFormButton = document.querySelector(".auth-wrapper .authorize.unlocked");
openAuthFormButton.click();
setTimeout(function() {
let tokenInput = document.querySelector(".auth-container input");
let authButton = document.querySelector(".auth-btn-wrapper .modal-btn.auth");
let closeButton = document.querySelector("button.btn-done");
let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
nativeInputValueSetter.call(tokenInput, jwtToken);
let inputEvent = new Event('input', { bubbles: true});
tokenInput.dispatchEvent(inputEvent);
authButton.click();
closeButton.click();
}, 500);
单击“授权”按钮,打开授权表单,添加一些等待(500 毫秒),以便表单有时间打开并初始化表单字段。然后将 JWT 令牌插入到输入字段中,对我来说棘手的部分是告诉 React 该值已更新,为此你必须直接调用 set 函数(因为 React 会覆盖它)并按此处所述分派“input”事件https://stackoverflow.com/a/46012210/4695799 https://stackoverflow.com/a/46012210/4695799
之后,在公园散步以执行单击“授权”按钮并关闭表单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)