fix: 网关拦截处理验证码校验,添加用户检查重复
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
package org.wfc.gateway.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import org.wfc.common.core.exception.CaptchaException;
|
||||
import org.wfc.common.core.web.domain.AjaxResult;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 验证码处理
|
||||
*
|
||||
@@ -17,8 +16,13 @@ public interface ValidateCodeService
|
||||
*/
|
||||
public AjaxResult createCaptcha() throws IOException, CaptchaException;
|
||||
|
||||
/**
|
||||
* 生成验证码-邮件
|
||||
*/
|
||||
public AjaxResult createCaptchaEmail(String email) throws IOException, CaptchaException;
|
||||
|
||||
/**
|
||||
* 校验验证码
|
||||
*/
|
||||
public void checkCaptcha(String key, String value, boolean isPic) throws CaptchaException;
|
||||
public void checkCaptcha(String key, String value) throws CaptchaException;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
package org.wfc.gateway.service.impl;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.google.code.kaptcha.Producer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.FastByteArrayOutputStream;
|
||||
import org.wfc.common.core.constant.CacheConstants;
|
||||
import org.wfc.common.core.constant.Constants;
|
||||
import org.wfc.common.core.constant.GlobalConstants;
|
||||
import org.wfc.common.core.domain.R;
|
||||
import org.wfc.common.core.exception.CaptchaException;
|
||||
import org.wfc.common.core.utils.StringUtils;
|
||||
import org.wfc.common.core.utils.sign.Base64;
|
||||
import org.wfc.common.core.utils.uuid.IdUtils;
|
||||
import org.wfc.common.core.web.domain.AjaxResult;
|
||||
import org.wfc.common.mail.utils.MailUtils;
|
||||
import org.wfc.common.redis.service.RedisService;
|
||||
import org.wfc.gateway.config.properties.CaptchaProperties;
|
||||
import org.wfc.gateway.service.ValidateCodeService;
|
||||
@@ -63,7 +66,7 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
|
||||
|
||||
// 保存验证码信息
|
||||
String uuid = IdUtils.simpleUUID();
|
||||
String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + uuid;
|
||||
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
|
||||
|
||||
String capStr = null, code = null;
|
||||
BufferedImage image = null;
|
||||
@@ -105,25 +108,61 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成验证码
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult createCaptchaEmail(String email) throws IOException, CaptchaException
|
||||
{
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
boolean captchaEnabled = captchaProperties.getEnabled();
|
||||
ajax.put("captchaEnabled", captchaEnabled);
|
||||
if (!captchaEnabled)
|
||||
{
|
||||
return ajax;
|
||||
}
|
||||
|
||||
// 保存验证码信息
|
||||
String uuid = IdUtils.simpleUUID();
|
||||
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
|
||||
|
||||
String code = RandomUtil.randomNumbers(4);
|
||||
|
||||
try {
|
||||
// MailUtils.sendText(email, "Registration verification code", "Your verification code is: " + code + ", The validity period is " + Constants.MAIL_CAPTCHA_EXPIRATION + " minutes, please fill in as soon as possible.");
|
||||
redisService.setCacheObject(verifyKey, code, Constants.MAIL_CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("uuid", uuid);
|
||||
data.put("email",email);
|
||||
if ("dev".equals(springProfilesActive)) {
|
||||
data.put("text", code);
|
||||
}
|
||||
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验验证码
|
||||
*/
|
||||
@Override
|
||||
public void checkCaptcha(String code, String uuid, boolean isPic) throws CaptchaException
|
||||
public void checkCaptcha(String code, String uuid) throws CaptchaException
|
||||
{
|
||||
if (StringUtils.isEmpty(code))
|
||||
{
|
||||
throw new CaptchaException("user.jcaptcha.not.blank");
|
||||
throw new CaptchaException("user.captcha.not.blank");
|
||||
}
|
||||
String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
|
||||
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
|
||||
String captcha = redisService.getCacheObject(verifyKey);
|
||||
if (captcha == null)
|
||||
{
|
||||
throw new CaptchaException();
|
||||
}
|
||||
if (isPic) {
|
||||
redisService.deleteObject(verifyKey);
|
||||
}
|
||||
redisService.deleteObject(verifyKey);
|
||||
if (!code.equalsIgnoreCase(captcha))
|
||||
{
|
||||
throw new CaptchaException();
|
||||
|
||||
Reference in New Issue
Block a user