2017-03-24 60 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; 
    }, 
    ... 
})