文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
成功解决Swagger问题 | v0.0.3 | 若布与宫合 | 8416837 | SpringBoot 2.2.6 Spring-Cloud-Gateway 2.2.2 |
在线API调试,如何授权成功
- 在Swagger页面调接口,需要授权才能调,怎么搞呢?需要进行授权
todo
- Bug:因为没有Cookie或存储,没有存储token,导致授权成功后,刷新页面,授权清零,变得没权限了;
进行授权
- 新建模块|微服务注意,除了引入Swagger相关依赖包,还要在Nacos配置中心增加授权配置,每个业务子模块都有Swagger配置,看这个:
,点进去,查找
swagger
,分别配置Swagger
授权地址等:
# swagger 配置
swagger:
title: 定时任务接口文档
license: Powered By ruoyi
licenseUrl: https://ruoyi.vip
authorization:
name: RuoYi OAuth
auth-regex: ^.*$
authorization-scope-list:
- scope: server
description: 客户端授权范围
token-url-list:
- http://localhost:8080/auth/oauth/token # 获取token
http://localhost:8080/auth/oauth/token
,这是文档授权地址,向这个地址请求获取Token。
- Swagger生成的接口需要权限验证的处理方法:
打开Swagger页面,地址是网关ip:端口/swagger-ui.html
(http://localhost:8080/swagger-ui.html)(网关就是ruoyi-gateway(-dev|-staging|-pro)
),在页面的右上角,点击授权即【Authorize】按钮(前提是你已经开启了这个按钮),填入参数,执行,报错了:
下拉条,那几个type好像都可以,但它们的传参是不一样的 - 模拟授权
在浏览器找到请求参数,使用客户端工具请求试一下,http报错显示如下:
简单,原来是验证码不能为空
:(坑:代码里打印的报错与http报错日志不一样,有时候浏览器那里的报错还是乱码的)
- 取消Swagger验证码验证,如何取消,请见下文,授权成功:
参数:
Swagger测试时,如何取消授权验证码验证?
在ValidateCodeFilter.java
的return (exchange, chain) -> {}
函数体里面增加下述代码:
// 节选
ServerHttpRequest request = exchange.getRequest();
URI uri = request.getURI();
// ...
// Swagger授权不处理
if ( uri.getHost().indexOf("localhost") >= 0) {
return chain.filter(exchange);
}
如果有想法,欢迎留言~