2017-01-09 3 views
2

Ich verwende einen Spring-Boot mit einem eckigen 2-Front-End und möchte meiner swagger-Konfiguration eine Autorisierung hinzufügen.Berechtigungs-Header zu Springfox hinzufügen

Meine aktuellen springfox Setup wie folgt aussehen:

@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();           
    } 

} 

Meine Anwendung einen JWT Filter für die Autorisierung verwendet und ich mag Prahlerei das Token so lange verwenden, wie es in dem Browser des Benutzers nicht abgelaufen ist.

ich sah, dass ich in der HTML-Datei wie folgt hinzufügen könnte:

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); 
    } 
} 

Da ich Springfox Ich habe diese Option nicht verwendet werde. Gibt es einen Weg, den ich über die Docket API hinzufügen könnte?

+0

, warum Sie diese Option nicht, weil Sie springfox verwenden? – jmattheis

+0

Erzeugt die HTML-Datei – Bhetzie

Antwort

2

Ich hatte zwei Abhängigkeiten, Springfox-Swagger2 und Springfox-Swagger-Ui. Ich habe die Springfox-Swagger-ui-Abhängigkeit entfernt.

Jhipster verwendet ein Beispiel, wo sie Aufrufe an die verpackten Swagger-Dateien von Springfox-Swagger2 machen. Ich konnte dieses Beispiel mit ein paar kleinen Änderungen verwenden.

Ich habe die swagger-ui-Konfiguration zu meinem Öffentlichen Ordner hinzugefügt. Da ich jetzt die HTML-Datei verwende, anstatt sie zu generieren, kann ich mein JWT-Token mit JavaScript einstellen.

mein Token wird in JSON nicht gespeichert, so dass ich tat:

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

statt

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

Um Ihre JWT Token an den Authorization-Header, in Ihrer SwaggerConfig Klasse hinzuzufügen, fügen Sie die folgende Bohne:

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

können Sie weitere Informationen here finden.

+0

Das hat nicht funktioniert:/ – Bhetzie

+0

Überprüfen Sie die 2.1.3 Springfox-Swagger2 mit Spring MVC und Spring Boot Kapitel der Dokumentation, vielleicht kann es helfen. Diese SecurityConfiguration-Bean-Deklaration funktionierte in meiner Spring-Version von mvc + spring security + swagger + jwt. – haihui

Verwandte Themen