2017-01-09 157 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