2017-03-24 43 views
5

在招摇UI 2.0是代码如何使用基本身份验证在招摇UI V.3.0

var basicAuth = new SwaggerClient.PasswordAuthorization("basicAuth", username, password); 
window.swaggerUi.api.clientAuthorizations.add("basicAuth", basicAuth); 

有人可以提供版本招摇代码UI 3.0吗?

谢谢。

编辑。 我正尝试做这样的事情 - Adding Basic Authorization for Swagger-UI

我在使用基本身份验证的服务器上使用Swagger。所以我不能初始化库。

const ui = SwaggerUIBundle({ 
url: "http://petstore.swagger.io/v2/swagger.json", 
dom_id: '#swagger-ui', 
presets: [ 
    SwaggerUIBundle.presets.apis, 
    // yay ES6 modules ↘ 
    Array.isArray(SwaggerUIStandalonePreset) ? SwaggerUIStandalonePreset : SwaggerUIStandalonePreset.default 
], 
plugins: [ 
    SwaggerUIBundle.plugins.DownloadUrl 
], 
layout: "StandaloneLayout" 
    }) 

window.ui = ui 

没有基本认证一切工作正常。

基本身份验证启用 - http://prntscr.com/enxee4

+0

你的意思是加载由基本身份认证保护的扬鞭规格(以.json/.yaml)?还是你想自动添加授权标题给所有“试用”请求? – Helen

+0

@Helen第一。 Swagger规范(.json/.yaml)受基本身份验证保护 – Alex

+0

我认为UI v3目前不支持此功能。你可以在[GitHub回购](https://github.com/swagger-api/swagger-ui/issues)中打开一个问题。 – Helen

回答

2

我使用一个简单的形式,一个index.html填写用户凭据来获得会话ID。然后重定向到swagger.html,并进行一些更改。

在window.onload之前:

var orgFetch; 

window.setExtraHeader = function(sessionId) { 
    var system = window.ui.getSystem(); 

    if(!system) return; 

    if(!orgFetch) { 
     orgFetch = system.fn.fetch; 
    } 

    system.fn.fetch = function(obj) { 
     if(!obj) return; 

     if(!obj.headers) { 
      obj.headers = {}; 
     } 

     obj.headers['sessionId'] = sessionId; 

     return orgFetch(obj) 
      .then(function(fetchRes) { 
       return fetchRes; 
      }); 
    } 

    system.specActions.download(); 
} 

然后:

window.ui = ui; 
window.setExtraHeader(localStorage.getItem("sessionId")); 

来源:https://github.com/swagger-api/swagger-ui/issues/2793

希望这有助于。

1

在Swagger UI 3.x中,获取受基本验证/ API密钥保护的规格(.yaml/.json文件)在ver。 3.3.2及更高版本。在你扬鞭UI初始化代码,定义一个requestinterceptor,重视权威性头的规格读取请求:

<!-- index.html --> 

const ui = SwaggerUIBundle({ 
    url: "http://petstore.swagger.io/v2/swagger.json", 

    requestInterceptor: (req) => { 
    if (req.loadSpec) { 
     // Fetch the spec using Basic auth, replace "user" and "password" with yours 
     req.headers.Authorization = 'Basic ' + btoa('user:password'); 

     // or API key 
     // req.headers.MyApiKey = 'abcde12345'; 

     // or bearer token 
     // req.headers.Authorization = 'Bearer abcde12345'; 
    } 
    return req; 
    }, 
    ... 
})