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

finished behavior qt.

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