Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Pig
提交
e71d5fac
P
Pig
项目概览
int
/
Pig
上一次同步 大约 1 年
通知
8
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Pig
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e71d5fac
编写于
5月 16, 2020
作者:
pig_冷冷
提交者:
Gitee
5月 16, 2020
浏览文件
操作
浏览文件
下载
差异文件
!57 替换"inappropriate blocking method call"代码
Merge pull request !57 from 疯狂的世界/dev
上级
9d62eafb
70295f59
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
38 addition
and
21 deletion
+38
-21
pig-gateway/src/main/java/com/pig4cloud/pig/gateway/filter/ValidateCodeGatewayFilter.java
...g4cloud/pig/gateway/filter/ValidateCodeGatewayFilter.java
+15
-8
pig-gateway/src/main/java/com/pig4cloud/pig/gateway/handler/ImageCodeHandler.java
...a/com/pig4cloud/pig/gateway/handler/ImageCodeHandler.java
+23
-13
未找到文件。
pig-gateway/src/main/java/com/pig4cloud/pig/gateway/filter/ValidateCodeGatewayFilter.java
浏览文件 @
e71d5fac
...
...
@@ -32,6 +32,7 @@ import lombok.SneakyThrows;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.gateway.filter.GatewayFilter
;
import
org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
...
...
@@ -83,13 +84,19 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory {
ServerHttpResponse
response
=
exchange
.
getResponse
();
response
.
setStatusCode
(
HttpStatus
.
PRECONDITION_REQUIRED
);
response
.
getHeaders
().
setContentType
(
MediaType
.
APPLICATION_JSON
);
final
String
errMsg
=
e
.
getMessage
();
return
response
.
writeWith
(
Mono
.
create
(
monoSink
->
{
try
{
return
response
.
writeWith
(
Mono
.
just
(
response
.
bufferFactory
()
.
wrap
(
objectMapper
.
writeValueAsBytes
(
R
.
failed
(
e
.
getMessage
())))));
}
catch
(
JsonProcessingException
e1
)
{
log
.
error
(
"对象输出异常"
,
e1
);
byte
[]
bytes
=
objectMapper
.
writeValueAsBytes
(
R
.
failed
(
errMsg
));
DataBuffer
dataBuffer
=
response
.
bufferFactory
().
wrap
(
bytes
);
monoSink
.
success
(
dataBuffer
);
}
catch
(
JsonProcessingException
jsonProcessingException
)
{
log
.
error
(
"对象输出异常"
,
jsonProcessingException
);
monoSink
.
error
(
jsonProcessingException
);
}
}));
}
return
chain
.
filter
(
exchange
);
...
...
pig-gateway/src/main/java/com/pig4cloud/pig/gateway/handler/ImageCodeHandler.java
浏览文件 @
e71d5fac
...
...
@@ -22,7 +22,8 @@ import com.google.code.kaptcha.Producer;
import
com.pig4cloud.pig.common.core.constant.CommonConstants
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.core.io.ByteArrayResource
;
import
org.springframework.core.io.buffer.DefaultDataBuffer
;
import
org.springframework.core.io.buffer.DefaultDataBufferFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
...
...
@@ -53,26 +54,35 @@ public class ImageCodeHandler implements HandlerFunction<ServerResponse> {
@Override
public
Mono
<
ServerResponse
>
handle
(
ServerRequest
serverRequest
)
{
final
String
randomStr
=
serverRequest
.
queryParam
(
"randomStr"
).
get
();
return
ServerResponse
.
status
(
HttpStatus
.
OK
)
.
contentType
(
MediaType
.
IMAGE_JPEG
)
.
body
(
BodyInserters
.
fromDataBuffers
(
Mono
.
create
(
monoSink
->
{
try
{
byte
[]
bytes
=
createCodeImage
(
randomStr
);
DefaultDataBuffer
dataBuffer
=
new
DefaultDataBufferFactory
().
wrap
(
bytes
);
monoSink
.
success
(
dataBuffer
);
}
catch
(
IOException
e
)
{
log
.
error
(
"ImageIO write err"
,
e
);
monoSink
.
error
(
e
);
}
})));
}
private
byte
[]
createCodeImage
(
String
randomStr
)
throws
IOException
{
//生成验证码
String
text
=
producer
.
createText
();
BufferedImage
image
=
producer
.
createImage
(
text
);
//保存验证码信息
String
randomStr
=
serverRequest
.
queryParam
(
"randomStr"
).
get
();
redisTemplate
.
opsForValue
().
set
(
CommonConstants
.
DEFAULT_CODE_KEY
+
randomStr
,
text
,
60
,
TimeUnit
.
SECONDS
);
// 转换流信息写出
FastByteArrayOutputStream
os
=
new
FastByteArrayOutputStream
();
try
{
ImageIO
.
write
(
image
,
"jpeg"
,
os
);
}
catch
(
IOException
e
)
{
log
.
error
(
"ImageIO write err"
,
e
);
return
Mono
.
error
(
e
);
}
return
ServerResponse
.
status
(
HttpStatus
.
OK
)
.
contentType
(
MediaType
.
IMAGE_JPEG
)
.
body
(
BodyInserters
.
fromResource
(
new
ByteArrayResource
(
os
.
toByteArray
())));
return
os
.
toByteArray
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录