swagger设置自定义token
swagger设置自定义token参考网址:springboot 集成JWT来实现一下token验证https://mp.weixin.qq.com/s/z4yqZA6gZ5YuMRu3h5ZAIA项目仓库地址https://gitee.com/shao_ming314/springboot-swagger-token重点说明该项目实现了 springboot 集成 jwt , 没有使用权限框架
swagger设置自定义token
参考网址:
springboot 集成JWT来实现一下token验证
https://mp.weixin.qq.com/s/z4yqZA6gZ5YuMRu3h5ZAIA
项目仓库地址
https://gitee.com/shao_ming314/springboot-swagger-token
重点说明
该项目实现了 springboot 集成 jwt , 没有使用权限框架 , 基于 springboot 拦截器实现登录认证
swagger 现在又更好的替代方案 knife4j
springboot 整合 knife4j + swagger 步骤
- pom.xml 引入依赖
<!-- springboot 整合 knife4j在线接口文档 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
<!-- 引入 Swagger 依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- 引入 Swagger UI 依赖,以实现 API 接口的 UI 界面 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
- 添加swagger配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeys = new ArrayList<>();
apiKeys.add(new ApiKey("token", "token", "header"));
return apiKeys;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("^(?!auth).*$")).build());
return securityContexts;
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("token", authorizationScopes));
return securityReferences;
}
@Bean(value = "defaultApi")
public Docket defaultApi() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//开启swagger文档
.enable(true)
.groupName("低版本版本")
.select()
// 设置 controller 的路径
.apis(RequestHandlerSelectors.basePackage("xxxxx"))
//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build()
.securitySchemes(securitySchemes()).securityContexts(securityContexts());
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger-bootstrap-ui-demo RESTful APIs")
.description("# swagger-bootstrap-ui-demo RESTful APIs")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build();
}
}
关键代码
- .apis(RequestHandlerSelectors.basePackage(“xxxxx”))
表示基于 controller 包生成接口文档
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
表示基于方法上有 ApiOperation 注解生成接口文档
springboot 整合 knife4j 优势
项目中可以同时引入 knife4j 和 swagger , 两种在线文档可以同时使用
如果项目本地启动默认端口是 8080 , 访问地址如下:
swagger 访问地址 : localhost:8080/swagger-ui.html
knife4j 访问地址 : localhost:8080/doc.html
修改请求 token 的名字
关键代码
swagger 配置类 SwaggerConfiguration.class
替换 所有 的名称即可
如果 token 的 键为 x-token
我们只需要替换所有的 token 为 x-token
如果 基于 http 的 Authorization 规范 , 请求头的 token 键就是 Authorization
我们只需要替换所有的 token 为 Authorization
设置token
swagger
设置token 所有接口访问 都可以生效
knife4j
全局设置 token
方法单独设置 token
[外链图片转存中…(img-XaBkq8zI-1636958935945)]
knife4j
全局设置 token
[外链图片转存中…(img-pzEji6jW-1636958935946)]
方法单独设置 token
[外链图片转存中…(img-GOIujtWX-1636958935948)]
(knife4j 比 swagger 强大 , 符合国人用图形化界面的习惯 , 哈哈哈)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)