Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-gateway
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-gateway
Commits
89c9e5af
提交
89c9e5af
authored
9月 12, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
登录错误或过期时,返回报错信息
上级
9f3d61ca
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
7 行增加
和
7 行删除
+7
-7
pom.xml
pom.xml
+1
-1
AuthGlobalFilter.java
...n/java/com/promotion/gateway/filter/AuthGlobalFilter.java
+6
-6
没有找到文件。
pom.xml
浏览文件 @
89c9e5af
...
...
@@ -22,7 +22,7 @@
<dependency>
<groupId>
com.wangxiaolu
</groupId>
<artifactId>
wangxiaolu-promotion-common
</artifactId>
<version>
0.0.
1
</version>
<version>
0.0.
2
</version>
</dependency>
<dependency>
...
...
src/main/java/com/promotion/gateway/filter/AuthGlobalFilter.java
浏览文件 @
89c9e5af
...
...
@@ -7,6 +7,7 @@ import com.promotion.gateway.data.UserDataService;
import
com.wangxiaolu.promotion.common.redis.RedisKeys
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.result.basedata.StatusCode
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cloud.gateway.filter.GatewayFilterChain
;
...
...
@@ -51,21 +52,20 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
// 1、判断url是否放行
boolean
isIgnore
=
whiteUrls
.
stream
().
anyMatch
(
url:
:
contains
);
if
(
isIgnore
)
{
log
.
info
(
"非校验URL放行:{}"
,
url
);
return
chain
.
filter
(
exchange
);
}
// 2、未登录请求跳转登录
String
token
=
exchange
.
getRequest
().
getHeaders
().
getFirst
(
"Authorization"
);
if
(
StringUtils
.
isBlank
(
token
))
{
return
loginError
(
exchange
);
return
loginError
(
exchange
,
RCode
.
NOT_LOGIN_ERROR
);
}
// 3、验证token
JSONObject
userJson
=
userDataService
.
getUserByToken
(
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
()
+
token
);
if
(
Objects
.
isNull
(
userJson
))
{
log
.
info
(
"
token登录错误:{}"
,
token
);
return
loginError
(
exchange
);
log
.
info
(
"
访问URL:{},token登录错误:{}"
,
url
,
token
);
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
());
...
...
@@ -76,11 +76,11 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
return
-
2
;
}
private
Mono
<
Void
>
loginError
(
ServerWebExchange
exchange
)
{
private
Mono
<
Void
>
loginError
(
ServerWebExchange
exchange
,
StatusCode
statusCode
)
{
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
);
R
res
=
new
R
(
statusCode
);
DataBuffer
buffer
=
response
.
bufferFactory
().
wrap
(
new
Gson
().
toJson
(
res
).
getBytes
(
StandardCharsets
.
UTF_8
));
return
response
.
writeWith
(
Flux
.
just
(
buffer
));
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论