Java爬坑 -- SpringBoot + Swagger2 整合遇到的权限问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java爬坑 -- SpringBoot + Swagger2 整合遇到的权限问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4945字,纯文字阅读大概需要8分钟。
内容图文
问题一 : 项目除了登录之外,其他接口都需要认证权限
通过度娘和谷歌发现有两种方式可以解决:
1. 通过给每一个接口配置一个全局的认证参数:
1 package com.dongsport.configuration; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.web.context.request.async.DeferredResult; 6 import springfox.documentation.builders.ApiInfoBuilder; 7 import springfox.documentation.builders.ParameterBuilder; 8 import springfox.documentation.builders.PathSelectors; 9 import springfox.documentation.schema.ModelRef; 10 import springfox.documentation.service.ApiInfo; 11 import springfox.documentation.service.Contact; 12 import springfox.documentation.service.Parameter; 13 import springfox.documentation.spi.DocumentationType; 14 import springfox.documentation.spring.web.plugins.Docket; 15 import springfox.documentation.swagger2.annotations.EnableSwagger2; 16 17 import java.util.ArrayList; 18 import java.util.List; 19 20 /** 21 * @ClassName SwaggerConfigurer 22 * @Description Swagger2 配置文件 23 * @Author Q_先生 24 * @Date 2018/4/27 15:01 25 * */ 26 @Configuration 27 @EnableSwagger2 28 public class SwaggerConfiguration { 29 @Bean 30 public Docket createRestApi() { 31 32 // 添加head参数start 33 ParameterBuilder tokenPar = new ParameterBuilder(); 34 List<Parameter> pars = new ArrayList<>(); 35 tokenPar.name("Authorization") 36 .description("令牌(登录后获取令牌)") 37 .modelRef(new ModelRef("string")) 38 .parameterType("header") 39 .required(false) 40 .build(); 41 pars.add(tokenPar.build()); 42//添加head参数end4344returnnew Docket(DocumentationType.SWAGGER_2) 45 .genericModelSubstitutes(DeferredResult.class) 46 .useDefaultResponseMessages(false) 47 .forCodeGeneration(false) 48 .pathMapping("") 49 .select() 50// TODO 如果是线上环境,添加路径过滤,设置为全部都不符合 51// .paths(PathSelectors.none())52 .build() 53 .globalOperationParameters(pars) 54 .apiInfo(productApiInfo()); 55 } 5657private ApiInfo productApiInfo() { 58returnnew ApiInfoBuilder() 59 .title("使用Swagger2构建RESTful APIs") 60 .description("物华天宝 , 龙光射牛斗之墟 \r" + 61 "人杰地灵 , 徐孺下陈蕃之榻") 62 .termsOfServiceUrl("www.baidu.com") 63 .contact(new Contact("Q_先生", "www.baidu.com", "邮箱")) 64 .version("1.0") 65 .build(); 66 } 67 }
2.使用SecurityScheme和SecurityContext支持配置Swagger以访问我们的安全API :
1 package com.dongsport.configuration; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 import springfox.documentation.builders.ApiInfoBuilder; 6 import springfox.documentation.builders.PathSelectors; 7 import springfox.documentation.builders.RequestHandlerSelectors; 8 import springfox.documentation.service.*; 9import springfox.documentation.spi.DocumentationType; 10import springfox.documentation.spi.service.contexts.SecurityContext; 11import springfox.documentation.spring.web.plugins.Docket; 12import springfox.documentation.swagger2.annotations.EnableSwagger2; 1314import java.util.List; 1516importstatic com.google.common.collect.Lists.newArrayList; 1718/**19 * @ClassName SwaggerConfigurer 20 * @Description Swagger2 配置文件 21 * @Author Q_先生 22 * @Date 2018/4/27 15:01 23 **/24@Configuration 25@EnableSwagger2 26publicclass SwaggerConfiguration { 2728 @Bean 29public Docket createRestApi() { 3031returnnew Docket(DocumentationType.SWAGGER_2). 32 useDefaultResponseMessages(false) 33 .select() 34 .apis(RequestHandlerSelectors.any()) 35 .paths(PathSelectors.regex("^(?!auth).*$")) 36 .build() 37 .apiInfo(productApiInfo()) 38 .securitySchemes(securitySchemes()) 39 .securityContexts(securityContexts()) 40 ; 4142 } 4344private List<ApiKey> securitySchemes() { 45return newArrayList( 46new ApiKey("Authorization", "Authorization", "header")); 47 } 4849private List<SecurityContext> securityContexts() { 50return newArrayList( 51 SecurityContext.builder() 52 .securityReferences(defaultAuth()) 53 .forPaths(PathSelectors.regex("^(?!auth).*$")) 54 .build() 55 ); 56 } 5758 List<SecurityReference> defaultAuth() { 59 AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); 60 AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; 61 authorizationScopes[0] = authorizationScope; 62return newArrayList( 63new SecurityReference("Authorization", authorizationScopes)); 64 } 6566private ApiInfo productApiInfo() { 67returnnew ApiInfoBuilder() 68 .title("使用Swagger2构建RESTful APIs") 69 .description("物华天宝 , 龙光射牛斗之墟 \r" + 70 "人杰地灵 , 徐孺下陈蕃之榻") 71 .termsOfServiceUrl("www.baidu.com") 72 .contact(new Contact("Q_先生", "www.baidu.com", "邮箱")) 73 .version("1.0") 74 .build(); 75 } 76 }
会出现一个Authorization的图标
点击Authorization 后出现一个弹框 , 你登录之后回去到你的票据填到这里,, 带权限的接口就可以访问了
问题二 : 如何给http://localhost:8081/swagger-ui.html接口地址ui也加上权限,如果别人知道你服务器地址就可以直接访问了
等解决了在修正...................留个坑
本文参考:http://www.leftso.com/blog/393.html
感谢大神的分享
Spring Boot Security Swagger2整合生成安全的在线REST API文档 SpringMVC也可参考
原文:https://www.cnblogs.com/chuzihang/p/9186480.html
内容总结
以上是互联网集市为您收集整理的Java爬坑 -- SpringBoot + Swagger2 整合遇到的权限问题全部内容,希望文章能够帮你解决Java爬坑 -- SpringBoot + Swagger2 整合遇到的权限问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。