Swagger UI授权按钮未显示

时间:2016-11-14 11:54:22

标签: java spring swagger-ui

编辑:我使用Swagger UI 2.5.0并尝试将其配置为使用oauth身份验证。根据我对petstore示例的理解和我读过的其他部分,如果我包含安全架构&我的Docket中的上下文应该会自动显示按钮 - 是这样的吗?如果是这样我还缺少什么?

我的API在虚张声势的用户界面显得很好 - 只是授权按钮(因此任何授权方式)都缺失了

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("api")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example"))
            .paths(PathSelectors.regex("/api.*"))
            .build()
            .securitySchemes(newArrayList(securitySchema()))
            .securityContexts(newArrayList(securityContext()));
}


public static final String securitySchemaOAuth2 = "oauth2schema";
public static final String authorizationScopeGlobal = "global";
public static final String authorizationScopeGlobalDesc ="accessEverything";

private OAuth securitySchema() {
    AuthorizationScope authorizationScope = new AuthorizationScope(authorizationScopeGlobal, authorizationScopeGlobal);
    LoginEndpoint loginEndpoint = new LoginEndpoint("http://localhost:9999/sso/login");
    GrantType grantType = new ImplicitGrant(loginEndpoint, "access_token");
    return new OAuth(securitySchemaOAuth2, newArrayList(authorizationScope), newArrayList(grantType));
}

private SecurityContext securityContext() {
    return SecurityContext.builder()
            .securityReferences(defaultAuth())
            .forPaths(PathSelectors.regex("/api.*"))
            .build();
}

private List<SecurityReference> defaultAuth() {
    AuthorizationScope authorizationScope
            = new AuthorizationScope(authorizationScopeGlobal, authorizationScopeGlobalDesc);
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;
    return newArrayList(
            new SecurityReference(securitySchemaOAuth2, authorizationScopes));
}

0 个答案:

没有答案