Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-gateway
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-gateway
Commits
4c39c366
提交
4c39c366
authored
1月 21, 2025
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、切换redis数据源;2、token解析改为link项目方式,通用token
上级
a1d3e20c
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
32 行增加
和
14 行删除
+32
-14
pom.xml
pom.xml
+1
-1
UserDataService.java
...main/java/com/promotion/gateway/data/UserDataService.java
+2
-0
UserDataServiceImpl.java
.../com/promotion/gateway/data/impl/UserDataServiceImpl.java
+6
-0
AuthGlobalFilter.java
...n/java/com/promotion/gateway/filter/AuthGlobalFilter.java
+20
-10
application-dev.yml
src/main/resources/application-dev.yml
+3
-3
没有找到文件。
pom.xml
浏览文件 @
4c39c366
...
...
@@ -5,7 +5,7 @@
<parent>
<groupId>
com.wangxiaolu
</groupId>
<artifactId>
wangxiaolu-promotion-parent
</artifactId>
<version>
0.0.
1
</version>
<version>
0.0.
2
</version>
</parent>
<groupId>
com.wangxiaolu
</groupId>
...
...
src/main/java/com/promotion/gateway/data/UserDataService.java
浏览文件 @
4c39c366
...
...
@@ -9,4 +9,6 @@ import com.alibaba.fastjson.JSONObject;
*/
public
interface
UserDataService
{
JSONObject
getUserByToken
(
String
token
);
boolean
hasKeyToken
(
String
tokenKey
);
}
src/main/java/com/promotion/gateway/data/impl/UserDataServiceImpl.java
浏览文件 @
4c39c366
...
...
@@ -2,6 +2,7 @@ package com.promotion.gateway.data.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.promotion.gateway.data.UserDataService
;
import
com.wangxiaolu.promotion.common.redis.RedisKeys
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
...
...
@@ -26,4 +27,9 @@ public class UserDataServiceImpl implements UserDataService {
String
val
=
vo
.
get
(
token
);
return
JSONObject
.
parseObject
(
val
);
}
@Override
public
boolean
hasKeyToken
(
String
tokenKey
)
{
return
redisTemplate
.
hasKey
(
RedisKeys
.
UserKeys
.
WXL_LINK_TOKEN
.
getKey
()
+
tokenKey
);
}
}
src/main/java/com/promotion/gateway/filter/AuthGlobalFilter.java
浏览文件 @
4c39c366
package
com
.
promotion
.
gateway
.
filter
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.google.gson.Gson
;
import
com.promotion.gateway.data.UserDataService
;
import
com.wangxiaolu.promotion.common.
redis.RedisKey
s
;
import
com.wangxiaolu.promotion.common.
util.JwtTokenUtil
s
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.result.basedata.StatusCode
;
import
io.jsonwebtoken.Claims
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cloud.gateway.filter.GatewayFilterChain
;
...
...
@@ -15,7 +15,6 @@ 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.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.server.ServerWebExchange
;
...
...
@@ -25,7 +24,6 @@ import reactor.core.publisher.Mono;
import
java.nio.charset.StandardCharsets
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author : liqiulin
...
...
@@ -43,7 +41,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
private
final
List
<
String
>
whiteUrls
=
Arrays
.
asList
(
"/login"
,
"/enroll"
,
"/sms/send/ver_code"
);
@Autowired
UserDataService
userDataService
;
private
UserDataService
userDataService
;
@Override
public
Mono
<
Void
>
filter
(
ServerWebExchange
exchange
,
GatewayFilterChain
chain
)
{
...
...
@@ -62,13 +60,25 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
}
// 3、验证token
JSONObject
userJson
=
userDataService
.
getUserByToken
(
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
()
+
token
);
if
(
Objects
.
isNull
(
userJson
))
{
log
.
info
(
"访问URL:{},token登录错误:{}"
,
url
,
token
);
Claims
claims
=
JwtTokenUtils
.
parseToken
(
token
);
if
(
claims
==
null
)
{
return
loginError
(
exchange
,
RCode
.
NOT_LOGIN_TIMEOUT_ERROR
);
}
ServerHttpRequest
httpRequest
=
exchange
.
getRequest
().
mutate
().
header
(
"loginId"
,
userJson
.
getString
(
"id"
)).
header
(
"loginQcId"
,
userJson
.
getString
(
"qcId"
)).
build
();
return
chain
.
filter
(
exchange
.
mutate
().
request
(
httpRequest
).
build
());
String
userkey
=
JwtTokenUtils
.
getUserKey
(
claims
);
boolean
islogin
=
userDataService
.
hasKeyToken
(
userkey
);
if
(!
islogin
)
{
return
loginError
(
exchange
,
RCode
.
NOT_LOGIN_TIMEOUT_ERROR
);
}
String
userid
=
JwtTokenUtils
.
getUserId
(
claims
);
String
username
=
JwtTokenUtils
.
getUserName
(
claims
);
if
(
StringUtils
.
isBlank
(
userid
)
||
StringUtils
.
isBlank
(
username
))
{
return
loginError
(
exchange
,
RCode
.
NOT_LOGIN_TIMEOUT_ERROR
);
}
return
chain
.
filter
(
exchange
);
}
@Override
...
...
src/main/resources/application-dev.yml
浏览文件 @
4c39c366
...
...
@@ -5,10 +5,10 @@ spring:
username
:
NvqGbJXH
password
:
D9Y@FR,84B*$MD^A36&m
redis
:
port
:
21101
host
:
bj-crs-oyzhz3c6.sql.tencentcdb.com
port
:
6379
host
:
192.168.100.40
database
:
0
password
:
u)R3jrHk(qwt~mv$Tg=U
password
:
QjL6H5nH
main
:
web-application-type
:
reactive
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论