Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
多鱼的夏天
RuoYi-Cloud-Docker
提交
41cf67da
R
RuoYi-Cloud-Docker
项目概览
多鱼的夏天
/
RuoYi-Cloud-Docker
通知
209
Star
7
Fork
6
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RuoYi-Cloud-Docker
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
41cf67da
编写于
7月 30, 2020
作者:
R
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
验证码类型支持(数组计算、字符验证)
上级
4126f634
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
72 addition
and
27 deletion
+72
-27
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java
...src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java
+45
-19
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
...m/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
+27
-8
未找到文件。
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java
浏览文件 @
41cf67da
...
...
@@ -5,6 +5,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
com.google.code.kaptcha.impl.DefaultKaptcha
;
import
com.google.code.kaptcha.util.Config
;
import
static
com
.
google
.
code
.
kaptcha
.
Constants
.*;
/**
* 验证码配置
...
...
@@ -14,42 +15,67 @@ import com.google.code.kaptcha.util.Config;
@Configuration
public
class
CaptchaConfig
{
@Bean
(
name
=
"captchaProducer"
)
public
DefaultKaptcha
getKaptchaBean
()
{
DefaultKaptcha
defaultKaptcha
=
new
DefaultKaptcha
();
Properties
properties
=
new
Properties
();
// 是否有边框 默认为true 我们可以自己设置yes,no
properties
.
setProperty
(
KAPTCHA_BORDER
,
"yes"
);
// 验证码文本字符颜色 默认为Color.BLACK
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_COLOR
,
"black"
);
// 验证码图片宽度 默认为200
properties
.
setProperty
(
KAPTCHA_IMAGE_WIDTH
,
"160"
);
// 验证码图片高度 默认为50
properties
.
setProperty
(
KAPTCHA_IMAGE_HEIGHT
,
"60"
);
// 验证码文本字符大小 默认为40
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_SIZE
,
"38"
);
// KAPTCHA_SESSION_KEY
properties
.
setProperty
(
KAPTCHA_SESSION_CONFIG_KEY
,
"kaptchaCode"
);
// 验证码文本字符长度 默认为5
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_CHAR_LENGTH
,
"4"
);
// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_NAMES
,
"Arial,Courier"
);
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
properties
.
setProperty
(
KAPTCHA_OBSCURIFICATOR_IMPL
,
"com.google.code.kaptcha.impl.ShadowGimpy"
);
Config
config
=
new
Config
(
properties
);
defaultKaptcha
.
setConfig
(
config
);
return
defaultKaptcha
;
}
@Bean
(
name
=
"captchaProducerMath"
)
public
DefaultKaptcha
getKaptchaBeanMath
()
{
DefaultKaptcha
defaultKaptcha
=
new
DefaultKaptcha
();
Properties
properties
=
new
Properties
();
// 是否有边框 默认为true 我们可以自己设置yes,no
properties
.
setProperty
(
"kaptcha.border"
,
"yes"
);
properties
.
setProperty
(
KAPTCHA_BORDER
,
"yes"
);
// 边框颜色 默认为Color.BLACK
properties
.
setProperty
(
"kaptcha.border.color"
,
"105,179,90"
);
properties
.
setProperty
(
KAPTCHA_BORDER_COLOR
,
"105,179,90"
);
// 验证码文本字符颜色 默认为Color.BLACK
properties
.
setProperty
(
"kaptcha.textproducer.font.color"
,
"blue"
);
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_COLOR
,
"blue"
);
// 验证码图片宽度 默认为200
properties
.
setProperty
(
"kaptcha.image.width"
,
"160"
);
properties
.
setProperty
(
KAPTCHA_IMAGE_WIDTH
,
"160"
);
// 验证码图片高度 默认为50
properties
.
setProperty
(
"kaptcha.image.height"
,
"60"
);
properties
.
setProperty
(
KAPTCHA_IMAGE_HEIGHT
,
"60"
);
// 验证码文本字符大小 默认为40
properties
.
setProperty
(
"kaptcha.textproducer.font.size"
,
"35"
);
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_SIZE
,
"35"
);
// KAPTCHA_SESSION_KEY
properties
.
setProperty
(
"kaptcha.session.key"
,
"kaptchaCodeMath"
);
properties
.
setProperty
(
KAPTCHA_SESSION_CONFIG_KEY
,
"kaptchaCodeMath"
);
// 验证码文本生成器
properties
.
setProperty
(
"kaptcha.textproducer.impl"
,
"com.ruoyi.gateway.config.KaptchaTextCreator"
);
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_IMPL
,
"com.ruoyi.gateway.config.KaptchaTextCreator"
);
// 验证码文本字符间距 默认为2
properties
.
setProperty
(
"kaptcha.textproducer.char.space"
,
"3"
);
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_CHAR_SPACE
,
"3"
);
// 验证码文本字符长度 默认为5
properties
.
setProperty
(
"kaptcha.textproducer.char.length"
,
"6"
);
// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1,
// fontSize)
properties
.
setProperty
(
"kaptcha.textproducer.font.names"
,
"Arial,Courier"
);
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_CHAR_LENGTH
,
"6"
);
// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
properties
.
setProperty
(
KAPTCHA_TEXTPRODUCER_FONT_NAMES
,
"Arial,Courier"
);
// 验证码噪点颜色 默认为Color.BLACK
properties
.
setProperty
(
"kaptcha.noise.color"
,
"white"
);
properties
.
setProperty
(
KAPTCHA_NOISE_COLOR
,
"white"
);
// 干扰实现类
properties
.
setProperty
(
"kaptcha.noise.impl"
,
"com.google.code.kaptcha.impl.NoNoise"
);
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple
// 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy
// 阴影com.google.code.kaptcha.impl.ShadowGimpy
properties
.
setProperty
(
"kaptcha.obscurificator.impl"
,
"com.google.code.kaptcha.impl.ShadowGimpy"
);
properties
.
setProperty
(
KAPTCHA_NOISE_IMPL
,
"com.google.code.kaptcha.impl.NoNoise"
);
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
properties
.
setProperty
(
KAPTCHA_OBSCURIFICATOR_IMPL
,
"com.google.code.kaptcha.impl.ShadowGimpy"
);
Config
config
=
new
Config
(
properties
);
defaultKaptcha
.
setConfig
(
config
);
return
defaultKaptcha
;
...
...
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
浏览文件 @
41cf67da
...
...
@@ -3,6 +3,7 @@ package com.ruoyi.gateway.service.impl;
import
java.awt.image.BufferedImage
;
import
java.io.IOException
;
import
java.util.concurrent.TimeUnit
;
import
javax.annotation.Resource
;
import
javax.imageio.ImageIO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -25,28 +26,46 @@ import com.ruoyi.gateway.service.ValidateCodeService;
@Service
public
class
ValidateCodeServiceImpl
implements
ValidateCodeService
{
@Autowired
private
Producer
producer
;
@Resource
(
name
=
"captchaProducer"
)
private
Producer
captchaProducer
;
@Resource
(
name
=
"captchaProducerMath"
)
private
Producer
captchaProducerMath
;
@Autowired
private
RedisService
redisService
;
// 验证码类型
private
String
captchaType
=
"math"
;
/**
* 生成验证码
*/
@Override
public
AjaxResult
createCapcha
()
throws
IOException
,
CaptchaException
{
// 生成验证码
String
capText
=
producer
.
createText
();
String
capStr
=
capText
.
substring
(
0
,
capText
.
lastIndexOf
(
"@"
));
String
verifyCode
=
capText
.
substring
(
capText
.
lastIndexOf
(
"@"
)
+
1
);
BufferedImage
image
=
producer
.
createImage
(
capStr
);
// 保存验证码信息
String
uuid
=
IdUtils
.
simpleUUID
();
String
verifyKey
=
Constants
.
CAPTCHA_CODE_KEY
+
uuid
;
redisService
.
setCacheObject
(
verifyKey
,
verifyCode
,
Constants
.
CAPTCHA_EXPIRATION
,
TimeUnit
.
MINUTES
);
String
capStr
=
null
,
code
=
null
;
BufferedImage
image
=
null
;
// 生成验证码
if
(
"math"
.
equals
(
captchaType
))
{
String
capText
=
captchaProducerMath
.
createText
();
capStr
=
capText
.
substring
(
0
,
capText
.
lastIndexOf
(
"@"
));
code
=
capText
.
substring
(
capText
.
lastIndexOf
(
"@"
)
+
1
);
image
=
captchaProducerMath
.
createImage
(
capStr
);
}
else
if
(
"char"
.
equals
(
captchaType
))
{
capStr
=
code
=
captchaProducer
.
createText
();
image
=
captchaProducer
.
createImage
(
capStr
);
}
redisService
.
setCacheObject
(
verifyKey
,
code
,
Constants
.
CAPTCHA_EXPIRATION
,
TimeUnit
.
MINUTES
);
// 转换流信息写出
FastByteArrayOutputStream
os
=
new
FastByteArrayOutputStream
();
try
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录