Swagger的访问地址里面没用令牌
时间: 2025-01-04 16:30:21 浏览: 7
### 配置Swagger以支持令牌认证
为了使 Swagger 支持令牌认证,在 Spring Boot 应用程序中可以通过两种主要方式实现这一目标。一种方法是在每个 API 请求上手动添加 token 参数;另一种更高效的方法则是通过全局配置来自动附加 token。
#### 方案一:单个API请求添加Token
当采用这种方式时,开发者需确保每一个受保护的 API 接口都能接收并验证传入的 token 值。这通常涉及到修改控制器中的各个端点函数,以便它们能够解析 HTTP 头部或查询字符串中的 token 信息[^1]。
```java
@GetMapping("/example")
public ResponseEntity<?> example(@RequestHeader("Authorization") String authorization) {
// Token validation logic here...
}
```
然而,这种方法增加了开发复杂度,并且容易出错,因此不推荐作为首选解决方案。
#### 方案二:全局配置Token
相比之下,更为优雅的做法是对所有需要鉴权的服务应用统一的拦截器机制。这样不仅可以简化代码结构,还能提高系统的可维护性和安全性。具体来说,可以在 `Docket` Bean 中定义安全上下文,从而让 Swagger UI 自动生成带有适当授权头字段的链接[^2]。
下面是一个简单的例子展示如何设置全局默认的安全模式:
```java
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiKey;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.securitySchemes(Arrays.asList(new ApiKey("JWT", "Authorization", "header")))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.ant("/api/**"))
.build();
}
```
上述代码片段展示了怎样利用 `ApiKey` 类指定用于传递 JWT 的头部名称 (`Authorization`) 及其位置 (即 `"header"`)[^3]。此外,还指定了哪些包下的接口应该被纳入到自动生成的文档之中。
完成以上配置之后,访问 http://localhost:8081/swagger-ui.html 即可在界面上看到新增加的 “Authorize” 按钮,点击它输入有效的 Bearer Token 后即可正常调用那些受到保护的资源。
阅读全文