【发布时间】:2020-09-03 16:09:53
【问题描述】:
我正在使用 Spring Boot 开发应用程序,我正在使用 Swagger 自动生成 API 文档,并且我还使用 swagger-ui.html 与这些 API 进行交互。
我也启用了 Spring Security,并且我有不同角色的用户。不同的 REST API 可用于不同的角色。
问题:如何配置 Swagger 以尊重 Spring 的 @Secured 注释和 swagger-ui.html 显示的修剪操作,以便只有当前用户可用的操作可用?
即想象下面的控制器
@RestController
@Secured(ROLE_USER)
public void SomeRestController {
@GetMapping
@Secured(ROLE_USER_TOP_MANAGER)
public String getInfoForTopManager() { /*...*/ }
@GetMapping
@Secured(ROLE_USER_MIDDLE_MANAGER)
public String getInfoForMiddleManager() { /*...*/ }
@GetMapping
public String getInfoForAnyUser() { /*...*/ }
}
无论当前用户角色如何,Swagger 都会显示 getInfoForTopManager 和 getInfoForMiddleManager 这两个操作。如果当前经过身份验证的用户角色是 ROLE_USER_MIDDLE_MANAGER,我希望 Swagger 中只提供 getInfoForMiddleManager 和 getInfoForAnyUser 操作。
【问题讨论】:
标签: java spring spring-boot swagger