Commit 186ccd2e authored by 王亮's avatar 王亮

finished behavior qt.

parent c5c3f0a6
...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.filter.BehaviorInterceptor; ...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.filter.BehaviorInterceptor;
import cn.quantgroup.xyqb.filter.TokenInterceptor; import cn.quantgroup.xyqb.filter.TokenInterceptor;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.v2.BehaviorContext;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.HibernateValidator;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,7 +26,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter { ...@@ -25,7 +26,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
@Autowired @Autowired
private ISessionService sessionService; private ISessionService sessionService;
@Autowired @Autowired
private IQuantgroupCaptchaService quantgroupCaptchaService; private BehaviorContext behaviorContext;
@Override @Override
public void addFormatters(FormatterRegistry registry) { public void addFormatters(FormatterRegistry registry) {
...@@ -54,7 +55,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter { ...@@ -54,7 +55,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TokenInterceptor(sessionService)).addPathPatterns("/v2/**") registry.addInterceptor(new TokenInterceptor(sessionService)).addPathPatterns("/v2/**")
.excludePathPatterns("/v2/behavior/code"); .excludePathPatterns("/v2/behavior/code");
registry.addInterceptor(new BehaviorInterceptor(quantgroupCaptchaService)).addPathPatterns("/v2/**","/api/v2") registry.addInterceptor(new BehaviorInterceptor(behaviorContext)).addPathPatterns("/v2/**","/api/v2")
.excludePathPatterns("/v2/behavior/code"); .excludePathPatterns("/v2/behavior/code");
} }
} }
\ No newline at end of file
...@@ -10,5 +10,4 @@ public class LoginReq { ...@@ -10,5 +10,4 @@ public class LoginReq {
@NotNull(message = "登录类型必填") @NotNull(message = "登录类型必填")
private Integer type; private Integer type;
private JSONObject data; private JSONObject data;
private LoginBehavior behavior;
} }
...@@ -3,10 +3,10 @@ package cn.quantgroup.xyqb.controller.req.v2; ...@@ -3,10 +3,10 @@ package cn.quantgroup.xyqb.controller.req.v2;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import java.util.Map;
@Data @Data
public class LoginBehavior { public class ValidateBehavior {
private Integer type; private Integer type;
private JSONObject data; private Map<String,String> data;
} }
...@@ -18,7 +18,8 @@ public enum BizExceptionEnum { ...@@ -18,7 +18,8 @@ public enum BizExceptionEnum {
// 验证码相关20开头 // 验证码相关20开头
FAIL_GENERATE_IMAGE("2001","生成图片失败"), FAIL_GENERATE_IMAGE("2001","生成图片失败"),
FAIL_VERIFY_CODE("2002","图形验证码错误"), FAIL_VERIFY_CODE("2002","图形验证码错误"),
UN_EXIT_VERIFY_TYPE("2003","不存在的验证码方式"); UN_EXIT_VERIFY_TYPE("2003","不存在的验证码方式"),
UN_EXIT_VERIFY_CODE("2004","验证模式下验证码参数不能为空");
......
package cn.quantgroup.xyqb.filter; package cn.quantgroup.xyqb.filter;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException; import cn.quantgroup.xyqb.exception.BizException;
import cn.quantgroup.xyqb.exception.BizExceptionEnum; import cn.quantgroup.xyqb.exception.BizExceptionEnum;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.service.v2.BehaviorContext;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashSet; import java.util.HashMap;
import java.util.Map;
public class BehaviorInterceptor implements HandlerInterceptor { public class BehaviorInterceptor implements HandlerInterceptor {
private final IQuantgroupCaptchaService quantgroupCaptchaService; private final BehaviorContext behaviorContext;
public BehaviorInterceptor(IQuantgroupCaptchaService quantgroupCaptchaService){
this.quantgroupCaptchaService = quantgroupCaptchaService; public BehaviorInterceptor(BehaviorContext behaviorContext) {
this.behaviorContext = behaviorContext;
} }
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String type = request.getHeader(Constants.X_BEHAVIOR_TYPE); String type = request.getHeader(Constants.X_BEHAVIOR_TYPE);
if(StringUtils.isEmpty(type) || !StringUtils.isNumeric(type)){ if (StringUtils.isEmpty(type) || !StringUtils.isNumeric(type)) {
return true; return true;
} }
switch (Integer.parseInt(type)){ switch (Integer.parseInt(type)) {
case 1: case 1:
//走极验逻辑 //走极验逻辑
return false; return false;
case 2: case 2:
//走量化派图形验证逻辑 //走量化派图形验证逻辑
String id = request.getHeader(Constants.X_BEHAVIOR_ID); String id = request.getHeader(Constants.X_BEHAVIOR_ID);
String imageValue = request.getHeader(Constants.X_BEHAVIOR_IMAGEVALUE); String imageValue = request.getHeader(Constants.X_BEHAVIOR_IMAGEVALUE);
if (StringUtils.isEmpty(id) || StringUtils.isEmpty(imageValue)) {
boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(id,imageValue); throw new BizException(BizExceptionEnum.UN_EXIT_VERIFY_CODE);
if(result){
return true;
}else{
throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE);
} }
ValidateBehavior validateBehavior = new ValidateBehavior();
validateBehavior.setType(2);
Map<String, String> data = new HashMap<>();
data.put("id", id);
data.put("imageValue", imageValue);
validateBehavior.setData(data);
behaviorContext.validate(validateBehavior);
default: default:
return true; return true;
} }
......
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq; import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException; import cn.quantgroup.xyqb.exception.BizException;
import cn.quantgroup.xyqb.exception.BizExceptionEnum; import cn.quantgroup.xyqb.exception.BizExceptionEnum;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
...@@ -27,4 +28,12 @@ public class BehaviorContext { ...@@ -27,4 +28,12 @@ public class BehaviorContext {
return behaviorStrategy.generate(behaviorReq); return behaviorStrategy.generate(behaviorReq);
} }
public boolean validate(ValidateBehavior validateBehavior){
BehaviorStrategy behaviorStrategy = behaviorStrategyMap.get(validateBehavior.getType());
if(behaviorStrategy == null){
throw new BizException(BizExceptionEnum.UN_EXIT_VERIFY_TYPE);
}
return behaviorStrategy.validate(validateBehavior);
}
} }
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq; import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.LoginBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
public interface BehaviorStrategy { public interface BehaviorStrategy {
Integer getType(); Integer getType();
boolean validate(LoginBehavior loginBehavior); boolean validate(ValidateBehavior validateBehavior);
void checkParam(LoginBehavior loginBehavior);
BehaviorCodeBean generate(BehaviorReq behaviorReq); BehaviorCodeBean generate(BehaviorReq behaviorReq);
} }
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq; import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.LoginBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -16,14 +16,10 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy{ ...@@ -16,14 +16,10 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy{
} }
@Override @Override
public boolean validate(LoginBehavior loginBehavior) { public boolean validate(ValidateBehavior validateBehavior) {
return false; return false;
} }
@Override
public void checkParam(LoginBehavior loginBehavior) {
}
@Override @Override
public BehaviorCodeBean generate(BehaviorReq behaviorReq) { public BehaviorCodeBean generate(BehaviorReq behaviorReq) {
......
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq; import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.LoginBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException; import cn.quantgroup.xyqb.exception.BizException;
import cn.quantgroup.xyqb.exception.BizExceptionEnum; import cn.quantgroup.xyqb.exception.BizExceptionEnum;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
...@@ -39,14 +39,15 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy { ...@@ -39,14 +39,15 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy {
} }
@Override @Override
public boolean validate(LoginBehavior loginBehavior) { public boolean validate(ValidateBehavior validateBehavior) {
return false; boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(validateBehavior.getData().get("id"),validateBehavior.getData().get("imageValue"));
if(result){
return true;
}else{
throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE);
}
} }
@Override
public void checkParam(LoginBehavior loginBehavior) {
}
@Override @Override
public BehaviorCodeBean generate(BehaviorReq behaviorReq) { public BehaviorCodeBean generate(BehaviorReq behaviorReq) {
......
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