2017-01-09 155 views
2

我正在使用帶有角度2前端的彈簧引導,並且希望將授權添加到我的招搖門配置中。向Springfox添加授權標頭

我目前springfox的設置是這樣:

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 

    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 

      .select()         
      .apis(RequestHandlerSelectors.basePackage("mybasepackage")) 
      .paths(PathSelectors.ant("/api/*")) 

      .build();           
    } 

} 

我的應用程序使用一個授權JWT過濾器,我想只要招搖使用令牌,因爲它不是在用戶的瀏覽器已過期。

我看到了,我可以添加在HTML文件中像這樣:

function addApiKeyAuthorization() { 
    var key = JSON.parse(localStorage.getItem("ls.authentication-token")); 
    if (key && key.trim() != "") { 
    var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("Authorization", "Bearer " + key, "header"); 
    window.swaggerUi.api.clientAuthorizations.add("bearer", apiKeyAuth); 
    log("Set bearer token: " + key); 
    } 
} 

由於我使用Springfox我沒有這個選項。有沒有一種方法可以通過Docket API添加它?

+0

爲什麼你,因爲你正在使用springfox沒有這樣的選擇呢? – jmattheis

+0

這是生成HTML文件 – Bhetzie

回答

2

我有兩個依賴項,springfox-swagger2和springfox-swagger-ui。我最終刪除了springfox-swagger-ui依賴項。

Jhipster使用了一個例子,他們通過springfox-swagger2獲取對打包的swagger文件的調用。我能夠通過一些小的改變來使用這個例子。

我將swagger-ui配置添加到我的公用文件夾中。由於我現在使用的是HTML文件而不是生成它,我可以使用JavaScript來設置我的JWT令牌。

我的令牌不被存儲在JSON,所以我所做的:的

var key = localStorage.getItem("MyTokenName"); 

代替

var key = JSON.parse(localStorage.getItem("MyTokenName")); 
2

爲了您的JWT令牌添加到Authorization頭,在你的SwaggerConfig類,添加以下豆:

@Bean 
public SecurityConfiguration security() { 
    return new SecurityConfiguration(null, // "client id", 
      null, // "client secret", 
      null, // "realm", 
      null, // "app", 
      "Bearer " + yourToken, ApiKeyVehicle.HEADER, "Authorization", "," /* scope separator */); 
} 

你可以找到更多信息here

+0

這不起作用:/ – Bhetzie

+0

檢查2.1.3 Springfox-swagger2與Spring MVC和Spring Boot文檔的章節,也許它可以幫助。這個SecurityConfiguration bean聲明在我的spring mvc + spring security + swagger + jwt實現中起作用。 – haihui