为 Springfox 添加授权 header
Add authorization header to Springfox
我正在使用带有 angular 2 前端的 spring 启动,我想为我的 swagger 配置添加授权。
我当前的 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 过滤器进行授权,我希望 swagger 使用该令牌,只要它在用户浏览器中未过期即可。
我看到我可以像这样在 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?
为了将您的 JWT 令牌添加到授权 header,在您的 SwaggerConfig
class 中,添加以下 bean:
@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。
我有两个依赖项,springfox-swagger2 和 springfox-swagger-ui。我最终删除了 springfox-swagger-ui 依赖项。
Jhipster 使用了一个示例,其中他们从 springfox-swagger2 对打包的 swagger 文件进行 Get 调用。我能够通过一些小的更改来使用这个示例。
我将 swagger-ui 配置添加到我的 public 文件夹中。因为我现在使用 HTML 文件而不是生成它,所以我可以使用 JavaScript 来设置我的 JWT 令牌。
我的令牌没有存储在 JSON,所以我做了:
var key = localStorage.getItem("MyTokenName");
而不是
var key = JSON.parse(localStorage.getItem("MyTokenName"));
我正在使用带有 angular 2 前端的 spring 启动,我想为我的 swagger 配置添加授权。
我当前的 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 过滤器进行授权,我希望 swagger 使用该令牌,只要它在用户浏览器中未过期即可。
我看到我可以像这样在 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?
为了将您的 JWT 令牌添加到授权 header,在您的 SwaggerConfig
class 中,添加以下 bean:
@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。
我有两个依赖项,springfox-swagger2 和 springfox-swagger-ui。我最终删除了 springfox-swagger-ui 依赖项。
Jhipster 使用了一个示例,其中他们从 springfox-swagger2 对打包的 swagger 文件进行 Get 调用。我能够通过一些小的更改来使用这个示例。
我将 swagger-ui 配置添加到我的 public 文件夹中。因为我现在使用 HTML 文件而不是生成它,所以我可以使用 JavaScript 来设置我的 JWT 令牌。
我的令牌没有存储在 JSON,所以我做了:
var key = localStorage.getItem("MyTokenName");
而不是
var key = JSON.parse(localStorage.getItem("MyTokenName"));