Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-gateway
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-gateway
Commits
884b4919
提交
884b4919
authored
5月 23, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加过滤器配置token登录;配置子项目路由转发
上级
5cb81497
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
347 行增加
和
55 行删除
+347
-55
pom.xml
pom.xml
+186
-19
WangxiaoluPromotionGatewayApplication.java
...motion/gateway/WangxiaoluPromotionGatewayApplication.java
+2
-0
ProviderController.java
.../com/promotion/gateway/controller/ProviderController.java
+0
-19
UserDataService.java
...main/java/com/promotion/gateway/data/UserDataService.java
+12
-0
UserDataServiceImpl.java
.../com/promotion/gateway/data/impl/UserDataServiceImpl.java
+29
-0
AuthGlobalFilter.java
...n/java/com/promotion/gateway/filter/AuthGlobalFilter.java
+83
-0
application-dev.yml
src/main/resources/application-dev.yml
+32
-0
application.properties
src/main/resources/application.properties
+0
-5
application.yml
src/main/resources/application.yml
+3
-12
没有找到文件。
pom.xml
浏览文件 @
884b4919
...
@@ -12,36 +12,31 @@
...
@@ -12,36 +12,31 @@
<artifactId>
wangxiaolu-promotion-gateway
</artifactId>
<artifactId>
wangxiaolu-promotion-gateway
</artifactId>
<version>
0.0.1
</version>
<version>
0.0.1
</version>
<packaging>
jar
</packaging>
<name>
wangxiaolu-promotion-gateway
</name>
<name>
wangxiaolu-promotion-gateway
</name>
<description>
wangxiaolu-promotion-gateway
</description>
<description>
wangxiaolu-promotion-gateway
</description>
<properties>
<spring-cloud.version>
2023.0.1
</spring-cloud.version>
<spring-boot.version>
2.4.2
</spring-boot.version>
<spring-cloud.version>
Finchley.RELEASE
</spring-cloud.version>
<nacos.version>
0.2.2.RELEASE
</nacos.version>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<groupId>
com.wangxiaolu
</groupId>
<artifactId>
spring-cloud-dependencies
</artifactId>
<artifactId>
wangxiaolu-promotion-common
</artifactId>
<version>
${spring-cloud.version}
</version>
<version>
0.0.1
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.
boot
</groupId>
<groupId>
org.springframework.
cloud
</groupId>
<artifactId>
spring-
boot
-dependencies
</artifactId>
<artifactId>
spring-
cloud
-dependencies
</artifactId>
<version>
${spring-
boot
.version}
</version>
<version>
${spring-
cloud-dependencies
.version}
</version>
<type>
pom
</type>
<type>
pom
</type>
<scope>
import
</scope>
<scope>
import
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework
.cloud
</groupId>
<groupId>
com.alibaba
.cloud
</groupId>
<artifactId>
spring-cloud-alibaba-dependencies
</artifactId>
<artifactId>
spring-cloud-alibaba-dependencies
</artifactId>
<version>
${
naco
s.version}
</version>
<version>
${
alibaba-dependencie
s.version}
</version>
<type>
pom
</type>
<type>
pom
</type>
<scope>
import
</scope>
<scope>
import
</scope>
</dependency>
</dependency>
...
@@ -49,15 +44,187 @@
...
@@ -49,15 +44,187 @@
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<artifactId>
spring-boot-starter
</artifactId>
<version>
2.4.2
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
</dependency>
<!-- Web 场景启动器) 来为 Web 开发予以支持。spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-aop
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-annotation
</artifactId>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on -->
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
</dependency>
<!-- 微信小程序 SDK 依赖 -->
<dependency>
<groupId>
com.github.binarywang
</groupId>
<artifactId>
weixin-java-miniapp
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 腾讯云服务 -->
<!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
<dependency>
<groupId>
com.tencentcloudapi
</groupId>
<artifactId>
tencentcloud-sdk-java-sms
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
redis.clients
</groupId>
<artifactId>
jedis
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
java-jwt
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
<version>
2021.1
</version>
<exclusions>
<exclusion>
<artifactId>
commons-io
</artifactId>
<groupId>
commons-io
</groupId>
</exclusion>
</exclusions>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-gateway
</artifactId>
</dependency>
<!-- gateway 负载均衡-->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-loadbalancer
</artifactId>
<version>
3.1.1
</version>
</dependency>
</dependencies>
</dependencies>
...
...
src/main/java/com/promotion/gateway/WangxiaoluPromotionGatewayApplication.java
浏览文件 @
884b4919
...
@@ -2,8 +2,10 @@ package com.promotion.gateway;
...
@@ -2,8 +2,10 @@ package com.promotion.gateway;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
@EnableConfigurationProperties
@EnableDiscoveryClient
@EnableDiscoveryClient
@SpringBootApplication
@SpringBootApplication
public
class
WangxiaoluPromotionGatewayApplication
{
public
class
WangxiaoluPromotionGatewayApplication
{
...
...
src/main/java/com/promotion/gateway/controller/ProviderController.java
deleted
100644 → 0
浏览文件 @
5cb81497
package
com
.
promotion
.
gateway
.
controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author : liqiulin
* @date : 2024-05-23 13
* @describe :
*/
@RestController
public
class
ProviderController
{
@GetMapping
(
"/helloProvider"
)
public
String
helloProvider
(){
return
"你好,我是提供服务者"
;
}
}
\ No newline at end of file
src/main/java/com/promotion/gateway/data/UserDataService.java
0 → 100644
浏览文件 @
884b4919
package
com
.
promotion
.
gateway
.
data
;
import
com.alibaba.fastjson.JSONObject
;
/**
* @author : liqiulin
* @date : 2024-05-23 17
* @describe :
*/
public
interface
UserDataService
{
JSONObject
getUserByToken
(
String
token
);
}
src/main/java/com/promotion/gateway/data/impl/UserDataServiceImpl.java
0 → 100644
浏览文件 @
884b4919
package
com
.
promotion
.
gateway
.
data
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.promotion.gateway.data.UserDataService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Service
;
/**
* @author : liqiulin
* @date : 2024-05-23 16
* @describe : token - user互转
*/
@Slf4j
@Service
public
class
UserDataServiceImpl
implements
UserDataService
{
@Autowired
RedisTemplate
<
String
,
String
>
redisTemplate
;
@Override
public
JSONObject
getUserByToken
(
String
token
)
{
ValueOperations
<
String
,
String
>
vo
=
redisTemplate
.
opsForValue
();
String
val
=
vo
.
get
(
token
);
return
JSONObject
.
parseObject
(
val
);
}
}
src/main/java/com/promotion/gateway/filter/AuthGlobalFilter.java
0 → 100644
浏览文件 @
884b4919
package
com
.
promotion
.
gateway
.
filter
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.gson.Gson
;
import
com.promotion.gateway.data.UserDataService
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.web.servlet.filter.OrderedFilter
;
import
org.springframework.cloud.gateway.filter.GatewayFilterChain
;
import
org.springframework.cloud.gateway.filter.GlobalFilter
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.server.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.server.ServerWebExchange
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.nio.charset.StandardCharsets
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-05-23 16
* @describe : 权限校验过滤器
*/
@Slf4j
@Component
public
class
AuthGlobalFilter
implements
GlobalFilter
,
Ordered
{
// 用户注册、用户登录、发送手机号验证码
private
final
String
whiteUrl
=
"login"
;
@Autowired
UserDataService
userDataService
;
@Override
public
Mono
<
Void
>
filter
(
ServerWebExchange
exchange
,
GatewayFilterChain
chain
)
{
// 当前访问的url
String
url
=
exchange
.
getRequest
().
getURI
().
getPath
();
// 1、判断url是否放行
if
(
url
.
contains
(
whiteUrl
))
{
log
.
info
(
"请求放行,URL:{}"
,
url
);
return
chain
.
filter
(
exchange
);
}
String
token
=
exchange
.
getRequest
().
getHeaders
().
getFirst
(
"Authorization"
);
// 2、未登录请求跳转登录
if
(
StringUtils
.
isBlank
(
token
))
{
return
loginError
(
exchange
);
}
// 3、验证token'
JSONObject
userJson
=
userDataService
.
getUserByToken
(
token
);
if
(
Objects
.
isNull
(
userJson
))
{
log
.
info
(
"token登录错误:{}"
,
token
);
return
loginError
(
exchange
);
}
return
chain
.
filter
(
exchange
);
}
@Override
public
int
getOrder
()
{
return
-
1
;
}
private
Mono
<
Void
>
loginError
(
ServerWebExchange
exchange
)
{
ServerHttpResponse
response
=
exchange
.
getResponse
();
response
.
setStatusCode
(
HttpStatus
.
OK
);
response
.
getHeaders
().
add
(
"Content-Type"
,
"application/json;charset=UTF-8"
);
R
res
=
new
R
(
RCode
.
NOT_LOGIN_ERROR
);
DataBuffer
buffer
=
response
.
bufferFactory
().
wrap
(
new
Gson
().
toJson
(
res
).
getBytes
(
StandardCharsets
.
UTF_8
));
return
response
.
writeWith
(
Flux
.
just
(
buffer
));
}
}
src/main/resources/application-dev.yml
0 → 100644
浏览文件 @
884b4919
spring
:
datasource
:
driver-class-name
:
com.mysql.jdbc.Driver
url
:
jdbc:mysql://bj-cdb-j8ppdy86.sql.tencentcdb.com:63569/promotion_dev?autoReconnect=true
username
:
LnNDBM
password
:
fd0%bhD4@oO(%
redis
:
port
:
21101
host
:
bj-crs-oyzhz3c6.sql.tencentcdb.com
database
:
0
password
:
u)R3jrHk(qwt~mv$Tg=U
main
:
web-application-type
:
reactive
cloud
:
nacos
:
discovery
:
server-addr
:
42.193.103.153:8848
namespace
:
dd681f3c-0d21-42e5-a96e-14863a7cdcdb
group
:
promotion
cluster-name
:
wangxiaolu-promotion-gateway
gateway
:
discovery
:
locator
:
enabled
:
true
routes
:
-
id
:
wangxiaolu-promotion-service
uri
:
lb://wangxiaolu-promotion-service
# uri: http://127.0.0.1:8011
predicates
:
-
Path=/**
src/main/resources/application.properties
deleted
100644 → 0
浏览文件 @
5cb81497
server.port
=
8010
spring.application.name
=
wangxiaolu-promotion-gateway
spring.cloud.nacos.discovery.server-addr
=
42.193.103.153:8848
spring.cloud.nacos.discovery.namespace
=
dd681f3c-0d21-42e5-a96e-14863a7cdcdb
spring.cloud.nacos.discovery.group
=
promotion
src/main/resources/application.yml
浏览文件 @
884b4919
...
@@ -2,17 +2,8 @@ server:
...
@@ -2,17 +2,8 @@ server:
port
:
8010
port
:
8010
spring
:
spring
:
datasource
:
driver-class-name
:
com.mysql.jdbc.Driver
url
:
jdbc:mysql://bj-cdb-j8ppdy86.sql.tencentcdb.com:63569/promotion_dev?autoReconnect=true
username
:
LnNDBM
password
:
fd0%bhD4@oO(%
application
:
application
:
name
:
wangxiaolu-promotion-gateway
name
:
wangxiaolu-promotion-gateway
cloud
:
nacos
:
profiles
:
discovery
:
active
:
dev
server-addr
:
42.193.103.153:8848
namespace
:
dd681f3c-0d21-42e5-a96e-14863a7cdcdb
group
:
promotion
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论