Commit e9a51fa7 authored by 技术部-任文超's avatar 技术部-任文超

Merge branch '20180130-geetest' of...

Merge branch '20180130-geetest' of http://git.quantgroup.cn/head_group/xyqb-user2 into 20180130-geetest

# Conflicts:
#	src/main/java/cn/quantgroup/xyqb/Constants.java
#	src/main/java/cn/quantgroup/xyqb/aspect/captcha/CaptchaNewValidateAdvisor.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/GeetestLib.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/IQuantgroupCaptchaService.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/geetest/sdk/GeetestLib.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/impl/GeetestCaptchaServiceImpl.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/impl/QuantgroupCaptchaServiceImpl.java
#	src/main/java/cn/quantgroup/xyqb/service/captcha/impl/sdk/GeetestLib.java
parents 7da31688 c942eddb
...@@ -94,11 +94,13 @@ public interface Constants { ...@@ -94,11 +94,13 @@ public interface Constants {
String AES_KEY = "ScnmRBhuQpo9kBdn"; String AES_KEY = "ScnmRBhuQpo9kBdn";
String GT_CAPTCHA_UNUSER = "0"; String GT_CAPTCHA_AVAILABLE = "0";
int GT_CAPTCHA_VALIDATE_SUCCESS =1;
String FN_GEETEST_CHALLENGE = "geetest_challenge"; String FN_GEETEST_CHALLENGE = "geetest_challenge";
String FN_GEETEST_VALIDATE = "geetest_validate"; String FN_GEETEST_VALIDATE = "geetest_validate";
String FN_GEETEST_SECCODE = "geetest_seccode"; String FN_GEETEST_SECCODE = "geetest_seccode";
String TEST_PARAM = "testType"; String TEST_PARAM = "testType";
String TEST_TYPE_GT = "gt"; String TEST_TYPE_GT = "gt";
String TEST_TYPE_QG = "qg"; String TEST_TYPE_QG = "qg";
String CAPTCHA_OF_QG_OR_GT = "success";
} }
...@@ -4,28 +4,21 @@ import cn.quantgroup.xyqb.Constants; ...@@ -4,28 +4,21 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService; import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IPUtil;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import com.octo.captcha.service.CaptchaServiceException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
/** /**
* @author xufei on 2018/1/30. * @author xufei on 2018/1/30.
...@@ -85,7 +78,7 @@ public class CaptchaNewValidateAdvisor { ...@@ -85,7 +78,7 @@ public class CaptchaNewValidateAdvisor {
String phoneNo = request.getParameter("phoneNo"); String phoneNo = request.getParameter("phoneNo");
String clientType = request.getParameter("clientType"); String clientType = request.getParameter("clientType");
log.info("使用极验二次验证,phoneNo:{}", phoneNo); log.info("使用极验二次验证,phoneNo:{}", phoneNo);
return 0 == geetestCaptchaService.captchaValidate(clientType, PasswordUtil.MD5(phoneNo), IPUtil.getRemoteIP(request), challenge, validate, seccode); return geetestCaptchaService.isCaptchaValidateSuccess(clientType, PasswordUtil.MD5(phoneNo), IPUtil.getRemoteIP(request), challenge, validate, seccode);
} }
/** /**
......
package cn.quantgroup.xyqb.controller.external.captcha; package cn.quantgroup.xyqb.controller.external.captcha;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator; import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller; import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -40,16 +39,16 @@ public class NewCaptchaController { ...@@ -40,16 +39,16 @@ public class NewCaptchaController {
log.info("[newCaptcha]获取验证码,phoneNo:{}", phoneNo); log.info("[newCaptcha]获取验证码,phoneNo:{}", phoneNo);
String geetestCaptcha = geetestCaptchaService.fetchGeetestCaptcha(PasswordUtil.MD5(phoneNo), String geetestCaptcha = geetestCaptchaService.fetchGeetestCaptcha(PasswordUtil.MD5(phoneNo),
IPUtil.getRemoteIP(request), request.getParameter("clientType")); IPUtil.getRemoteIP(request), request.getParameter("clientType"));
if (Constants.GT_CAPTCHA_UNUSER.equals(geetestCaptcha)) { log.info("结果geetestCaptcha:{},phoneNo:{}", geetestCaptcha,phoneNo);
if (null != geetestCaptcha) {
return JsonResult.buildSuccessResult("", geetestCaptcha);
} else {
try { try {
return JsonResult.buildSuccessResult("", quantgroupCaptchaService.fetchCaptcha(request.getLocale())); return JsonResult.buildSuccessResult("", quantgroupCaptchaService.fetchCaptcha(request.getLocale()));
} catch (Exception e) { } catch (Exception e) {
log.error("获取验证码失败e:{}", e); log.error("获取验证码失败e:{}", e);
return JsonResult.buildErrorStateResult("", "fail"); return JsonResult.buildErrorStateResult("", "fail");
} }
} else {
log.info("[newCaptcha]极验可用,phoneNo:{}", phoneNo);
return JsonResult.buildSuccessResult("", geetestCaptcha);
} }
} }
......
...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.sms; ...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.sms;
import cn.quantgroup.sms.MsgParams; import cn.quantgroup.sms.MsgParams;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.captcha.CaptchaValidator; import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
...@@ -51,14 +51,14 @@ public class SmsController implements IBaseController { ...@@ -51,14 +51,14 @@ public class SmsController implements IBaseController {
* 短信验证码: for H5 * 短信验证码: for H5
* 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制 * 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_sms_verification_code") @RequestMapping("/send_sms_verification_code")
public JsonResult verifyPhoneNoH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult verifyPhoneNoH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2(phoneNo,appName); return sendVerificationCode2(phoneNo,appName);
} }
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_reset_code") @RequestMapping("/send_reset_code")
public JsonResult resetPasswordH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult resetPasswordH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("重置密码-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("重置密码-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
...@@ -69,7 +69,7 @@ public class SmsController implements IBaseController { ...@@ -69,7 +69,7 @@ public class SmsController implements IBaseController {
* 短信验证码: for H5 * 短信验证码: for H5
* 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制 * 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_sms_verification_code_voice") @RequestMapping("/send_sms_verification_code_voice")
public JsonResult verifyPhoneNoH5New(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, public JsonResult verifyPhoneNoH5New(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,
String usage) { String usage) {
...@@ -81,7 +81,7 @@ public class SmsController implements IBaseController { ...@@ -81,7 +81,7 @@ public class SmsController implements IBaseController {
return sendVerificationCode2Voice(phoneNo, usage); return sendVerificationCode2Voice(phoneNo, usage);
} }
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_reset_code_voice") @RequestMapping("/send_reset_code_voice")
public JsonResult resetPasswordH5New(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, public JsonResult resetPasswordH5New(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,
String usage) { String usage) {
...@@ -96,7 +96,7 @@ public class SmsController implements IBaseController { ...@@ -96,7 +96,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送验证码 * 快速登陆发送验证码
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_login_code_voice") @RequestMapping("/send_login_code_voice")
public JsonResult sendLoginCodeNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, public JsonResult sendLoginCodeNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,
String usage) { String usage) {
...@@ -111,7 +111,7 @@ public class SmsController implements IBaseController { ...@@ -111,7 +111,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送验证码 * 快速登陆发送验证码
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_login_code") @RequestMapping("/send_login_code")
public JsonResult sendLoginCode(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult sendLoginCode(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
...@@ -121,7 +121,7 @@ public class SmsController implements IBaseController { ...@@ -121,7 +121,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速注册发送验证码 * 快速注册发送验证码
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_regist_code") @RequestMapping("/send_regist_code")
public JsonResult sendRegistCode(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult sendRegistCode(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("快速注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
...@@ -199,7 +199,7 @@ public class SmsController implements IBaseController { ...@@ -199,7 +199,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送验证码新版 * 快速登陆发送验证码新版
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_login_code_voice_new") @RequestMapping("/send_login_code_voice_new")
public JsonResult sendLoginCodeVoiceNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, public JsonResult sendLoginCodeVoiceNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom,
String usage, @RequestParam(required = false) String deviceId) { String usage, @RequestParam(required = false) String deviceId) {
...@@ -215,7 +215,7 @@ public class SmsController implements IBaseController { ...@@ -215,7 +215,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送短信验证码 * 快速登陆发送短信验证码
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_login_code_new") @RequestMapping("/send_login_code_new")
public JsonResult sendLoginSmsCodeNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, @RequestParam(required = false) String deviceId,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult sendLoginSmsCodeNew(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, @RequestParam(required = false) String deviceId,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
...@@ -224,7 +224,7 @@ public class SmsController implements IBaseController { ...@@ -224,7 +224,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送短信验证码 * 快速登陆发送短信验证码
*/ */
@CaptchaValidator @CaptchaNewValidator
@RequestMapping("/send_login_code_new_forH5") @RequestMapping("/send_login_code_new_forH5")
public JsonResult sendLoginSmsCodeNewForH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, @RequestParam(required = false) String deviceId,@RequestParam(required = false,defaultValue = "")String appName) { public JsonResult sendLoginSmsCodeNewForH5(@RequestParam String phoneNo, @RequestParam(required = false) String registerFrom, @RequestParam(required = false) String deviceId,@RequestParam(required = false,defaultValue = "")String appName) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
......
package cn.quantgroup.xyqb.service.captcha.impl.sdk; package cn.quantgroup.xyqb.service.captcha;
import cn.quantgroup.xyqb.Constants;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -15,6 +14,7 @@ import java.util.HashMap; ...@@ -15,6 +14,7 @@ import java.util.HashMap;
/** /**
* Java SDK * Java SDK
*
* @author geetet * @author geetet
*/ */
public class GeetestLib { public class GeetestLib {
...@@ -46,7 +46,7 @@ public class GeetestLib { ...@@ -46,7 +46,7 @@ public class GeetestLib {
/** /**
* 返回字符串 * 返回字符串
*/ */
private String responseStr = ""; private String responseStr;
/** /**
* 调试开关,是否输出调试日志 * 调试开关,是否输出调试日志
...@@ -60,7 +60,7 @@ public class GeetestLib { ...@@ -60,7 +60,7 @@ public class GeetestLib {
* @param captchaId * @param captchaId
* @param privateKey * @param privateKey
*/ */
public GeetestLib(String captchaId, String privateKey, boolean newFailback,String apiUrl) { public GeetestLib(String captchaId, String privateKey, boolean newFailback, String apiUrl) {
this.captchaId = captchaId; this.captchaId = captchaId;
this.privateKey = privateKey; this.privateKey = privateKey;
...@@ -85,7 +85,7 @@ public class GeetestLib { ...@@ -85,7 +85,7 @@ public class GeetestLib {
* @return * @return
*/ */
private String getFailPreProcessRes() { private String getFailPreProcessRes() {
return Constants.GT_CAPTCHA_UNUSER; return null;
} }
/** /**
...@@ -98,7 +98,7 @@ public class GeetestLib { ...@@ -98,7 +98,7 @@ public class GeetestLib {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
try { try {
jsonObject.put("success", 1); jsonObject.put("success", "0");
jsonObject.put("gt", this.captchaId); jsonObject.put("gt", this.captchaId);
jsonObject.put("challenge", challenge); jsonObject.put("challenge", challenge);
......
...@@ -11,7 +11,7 @@ public interface IGeetestCaptchaService { ...@@ -11,7 +11,7 @@ public interface IGeetestCaptchaService {
* @param markStr 标示 * @param markStr 标示
* @param remoteIp * @param remoteIp
* @param clientType * @param clientType
* @return 获取失败返回"0"服务不可用,成功返回验证码 * @return 获取失败返回null
*/ */
String fetchGeetestCaptcha(String markStr, String remoteIp, String clientType); String fetchGeetestCaptcha(String markStr, String remoteIp, String clientType);
...@@ -20,12 +20,13 @@ public interface IGeetestCaptchaService { ...@@ -20,12 +20,13 @@ public interface IGeetestCaptchaService {
* 二次验证 * 二次验证
* *
* @param clientType * @param clientType
* @param phoneNo 参数 * @param phoneNo
* @param seccode * @param remoteIp
* @param validate
* @param challenge * @param challenge
* @return 验证结果, 1表示验证成功0表示验证失败 * @param validate
* @param seccode
* @return
*/ */
int captchaValidate(String clientType, String phoneNo, String remoteIp, String challenge, String validate, String seccode); Boolean isCaptchaValidateSuccess(String clientType, String phoneNo, String remoteIp, String challenge, String validate, String seccode);
} }
package cn.quantgroup.xyqb.service.captcha.impl; package cn.quantgroup.xyqb.service.captcha.impl;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.service.captcha.GeetestLib;
import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService; import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService;
import cn.quantgroup.xyqb.service.captcha.impl.sdk.GeetestLib;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -60,8 +61,8 @@ public class GeetestCaptchaServiceImpl implements IGeetestCaptchaService { ...@@ -60,8 +61,8 @@ public class GeetestCaptchaServiceImpl implements IGeetestCaptchaService {
} }
@Override @Override
public int captchaValidate(String clientType, String markStr, String remoteIp, String challenge, String validate, String seccode) { public Boolean isCaptchaValidateSuccess(String clientType, String markStr, String remoteIp, String challenge, String validate, String seccode) {
HashMap<String, String> param = getParam(markStr, remoteIp, clientType); HashMap<String, String> param = getParam(markStr, remoteIp, clientType);
return getGeetestSdk().enhencedValidateRequest(challenge, validate, seccode, param); return Constants.GT_CAPTCHA_VALIDATE_SUCCESS==getGeetestSdk().enhencedValidateRequest(challenge, validate, seccode, param);
} }
} }
package cn.quantgroup.xyqb.service.captcha.impl; package cn.quantgroup.xyqb.service.captcha.impl;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import com.octo.captcha.service.CaptchaServiceException; import com.octo.captcha.service.CaptchaServiceException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment