Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
9399f362
提交
9399f362
authored
11月 11, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitee.com/zhijiantianya/yudao-cloud
into spring-cloud-alibaba
上级
0f66390a
4d3fb9db
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
149 行增加
和
1 行删除
+149
-1
YudaoWebSecurityConfigurerAdapter.java
...rk/security/config/YudaoWebSecurityConfigurerAdapter.java
+1
-0
pom.xml
yudao-gateway/pom.xml
+15
-0
SwaggerHandler.java
...java/cn/iocoder/yudao/gateway/swagger/SwaggerHandler.java
+63
-0
SwaggerProvider.java
...ava/cn/iocoder/yudao/gateway/swagger/SwaggerProvider.java
+53
-0
application.yaml
yudao-gateway/src/main/resources/application.yaml
+17
-1
没有找到文件。
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java
浏览文件 @
9399f362
...
...
@@ -127,6 +127,7 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap
.
antMatchers
(
HttpMethod
.
DELETE
,
permitAllUrls
.
get
(
HttpMethod
.
DELETE
).
toArray
(
new
String
[
0
])).
permitAll
()
// 基于 yudao.security.permit-all-urls 无需认证
.
antMatchers
(
securityProperties
.
getPermitAllUrls
().
toArray
(
new
String
[
0
])).
permitAll
()
.
antMatchers
(
"/captcha/get"
,
"/captcha/check"
).
permitAll
()
// 设置 App API 无需认证
.
antMatchers
(
buildAppApi
(
"/**"
)).
permitAll
()
// ②:每个项目的自定义规则
...
...
yudao-gateway/pom.xml
浏览文件 @
9399f362
...
...
@@ -67,8 +67,23 @@
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-monitor
</artifactId>
</dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
io.swagger
</groupId>
<artifactId>
swagger-annotations
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-boot-starter
</artifactId>
<version>
3.0.0
</version>
</dependency>
</dependencies>
<build>
<!-- 设置构建的 jar 包名 -->
<finalName>
${project.artifactId}
</finalName>
...
...
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/swagger/SwaggerHandler.java
0 → 100644
浏览文件 @
9399f362
package
cn
.
iocoder
.
yudao
.
gateway
.
swagger
;
import
java.util.Optional
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Mono
;
import
springfox.documentation.swagger.web.SecurityConfiguration
;
import
springfox.documentation.swagger.web.SecurityConfigurationBuilder
;
import
springfox.documentation.swagger.web.SwaggerResourcesProvider
;
import
springfox.documentation.swagger.web.UiConfiguration
;
import
springfox.documentation.swagger.web.UiConfigurationBuilder
;
/**
* @author zxliu
* @create 2022-10-25 11:24
*/
@RestController
@RequestMapping
(
"/swagger-resources"
)
public
class
SwaggerHandler
{
@Autowired
(
required
=
false
)
private
SecurityConfiguration
securityConfiguration
;
@Autowired
(
required
=
false
)
private
UiConfiguration
uiConfiguration
;
private
final
SwaggerResourcesProvider
swaggerResources
;
@Autowired
public
SwaggerHandler
(
SwaggerResourcesProvider
swaggerResources
)
{
this
.
swaggerResources
=
swaggerResources
;
}
@GetMapping
(
"/configuration/security"
)
public
Mono
<
ResponseEntity
<
SecurityConfiguration
>>
securityConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
securityConfiguration
).
orElse
(
SecurityConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@GetMapping
(
"/configuration/ui"
)
public
Mono
<
ResponseEntity
<
UiConfiguration
>>
uiConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
uiConfiguration
).
orElse
(
UiConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@SuppressWarnings
(
"rawtypes"
)
@GetMapping
(
""
)
public
Mono
<
ResponseEntity
>
swaggerResources
()
{
return
Mono
.
just
((
new
ResponseEntity
<>(
swaggerResources
.
get
(),
HttpStatus
.
OK
)));
}
}
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/swagger/SwaggerProvider.java
0 → 100644
浏览文件 @
9399f362
package
cn
.
iocoder
.
yudao
.
gateway
.
swagger
;
import
java.util.ArrayList
;
import
java.util.List
;
import
lombok.AllArgsConstructor
;
import
org.springframework.cloud.gateway.config.GatewayProperties
;
import
org.springframework.cloud.gateway.route.RouteLocator
;
import
org.springframework.cloud.gateway.support.NameUtils
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.stereotype.Component
;
import
springfox.documentation.swagger.web.SwaggerResource
;
import
springfox.documentation.swagger.web.SwaggerResourcesProvider
;
/**
* @author zxliu
* @create 2022-10-25 11:23
*/
@Component
@Primary
@AllArgsConstructor
public
class
SwaggerProvider
implements
SwaggerResourcesProvider
{
private
final
RouteLocator
routeLocator
;
private
final
GatewayProperties
gatewayProperties
;
@Override
public
List
<
SwaggerResource
>
get
()
{
List
<
SwaggerResource
>
resources
=
new
ArrayList
<>();
List
<
String
>
routes
=
new
ArrayList
<>();
routeLocator
.
getRoutes
().
subscribe
(
route
->
routes
.
add
(
route
.
getId
()));
gatewayProperties
.
getRoutes
().
stream
().
filter
(
routeDefinition
->
routes
.
contains
(
routeDefinition
.
getId
()))
.
forEach
(
route
->
route
.
getPredicates
().
stream
()
.
filter
(
predicateDefinition
->
(
"Path"
).
equalsIgnoreCase
(
predicateDefinition
.
getName
()))
.
forEach
(
predicateDefinition
->
resources
.
add
(
swaggerResource
(
route
.
getId
(),
predicateDefinition
.
getArgs
().
get
(
NameUtils
.
GENERATED_NAME_PREFIX
+
"0"
)
.
replace
(
"**"
,
"v2/api-docs"
))))
);
return
resources
;
}
private
SwaggerResource
swaggerResource
(
String
name
,
String
location
)
{
SwaggerResource
swaggerResource
=
new
SwaggerResource
();
swaggerResource
.
setName
(
name
);
swaggerResource
.
setLocation
(
location
);
swaggerResource
.
setSwaggerVersion
(
"2.0"
);
return
swaggerResource
;
}
}
yudao-gateway/src/main/resources/application.yaml
浏览文件 @
9399f362
...
...
@@ -5,25 +5,41 @@ spring:
cloud
:
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway
:
discovery
:
locator
:
# gateway开启服务注册和发现的功能,
enabled
:
true
# 将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了)
lowerCaseServiceId
:
true
# 路由配置项,对应 RouteDefinition 数组
routes
:
-
id
:
system-admin-api
# 路由的编号
uri
:
grayLb://system-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/system/**
-
Path=/admin-api/system/**,/captcha/**
filters
:
-
RewritePath=/admin-api/system/v2/api-docs, /v2/api-docs
-
id
:
system-app-api
# 路由的编号
uri
:
grayLb://system-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/app-api/system/**
filters
:
-
RewritePath=/app-api/system/v2/api-docs, /v2/api-docs
-
id
:
infra-admin-api
# 路由的编号
uri
:
grayLb://infra-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/infra/**
filters
:
-
RewritePath=/admin-api/infram/v2/api-docs, /v2/api-docs
-
id
:
infra-app-api
# 路由的编号
uri
:
grayLb://infra-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/app-api/infra/**
filters
:
-
RewritePath=/app-api/infra/v2/api-docs, /v2/api-docs
-
id
:
bpm-admin-api
# 路由的编号
uri
:
grayLb://bpm-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/bpm/**
filters
:
-
RewritePath=/admin-api/bpm/v2/api-docs, /v2/api-docs
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论