From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 18 一月 2020 12:06:27 +0800 Subject: [PATCH] 用户注册信息 --- fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java | 89 +++++++++++++++++++++++++++++++++----------- 1 files changed, 67 insertions(+), 22 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java b/fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java index a826976..d14d239 100644 --- a/fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java +++ b/fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java @@ -14,6 +14,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -23,14 +24,16 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.ThreadUtil; import net.sf.json.JSONObject; //瀹㈡埛绔帴鍙g鍚嶉獙璇� @Component @Aspect +@Order(2) public class SignValidateAspect { - public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*(..))"; + public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*.*(..))"; public static String KEY = ""; @@ -52,6 +55,8 @@ for (Object obj : args) { if (obj instanceof AcceptData) { acceptData = (AcceptData) obj; + } else if (obj instanceof HttpServletRequest) { + request = (HttpServletRequest) obj; } } boolean isRight = true; @@ -64,8 +69,8 @@ if ((acceptData.getPlatform() != null && acceptData.getPlatform().equalsIgnoreCase("android") && acceptData.getVersion() != null && Integer.parseInt(acceptData.getVersion()) > 21) - || (acceptData.getPlatform()!=null&&acceptData.getPlatform().equalsIgnoreCase("ios") && acceptData.getVersion() != null - && Integer.parseInt(acceptData.getVersion()) > 24)) { + || (acceptData.getPlatform() != null && acceptData.getPlatform().equalsIgnoreCase("ios") + && acceptData.getVersion() != null && Integer.parseInt(acceptData.getVersion()) > 24)) { isRight = signIsRight(request); } else if (acceptData.getPackages().startsWith("com.haicaojie")) { isRight = signIsRight(request); @@ -81,26 +86,46 @@ // 绛惧悕鏄惁姝g‘ if (isRight) { // 鍒ゆ柇绛惧悕瓒呮椂 - // if (Math.abs((Long.parseLong(acceptData.getTime()) - - // System.currentTimeMillis())) > 1000 * 60 * 10) { - // JSONObject data = new JSONObject(); - // data.put("code", -2); - // data.put("msg", "鏃堕棿閿欒"); - // out.print(data); - // out.close(); - // return null; - // } + if (Math.abs((Long.parseLong(acceptData.getTime()) - System.currentTimeMillis())) > 1000 * 60 * 10) { + JSONObject data = new JSONObject(); + data.put("code", -2); + data.put("msg", "鏃堕棿閿欒"); + out.print(data); + out.close(); + return null; + } + + final String url = request.getRequestURI(); + @SuppressWarnings("unchecked") + final Map<String, Object> params = request.getParameterMap(); + ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 璁板綍璇锋眰鏃ュ織 + LogHelper.requestInfo(url, params); + } + }); Object obj = null; try { + long startTime = System.currentTimeMillis(); obj = joinPoint.proceed(args); - } catch (Throwable e) { - e.printStackTrace(); - try { - LogHelper.errorDetailInfo(e, getHttpServletParams(request), request.getRequestURI().toString()); - } catch (Exception e1) { - e1.printStackTrace(); + final long responseTime = System.currentTimeMillis() - startTime; + // 璁板綍澶т簬2s鐨勮姹� + if (responseTime >= 2000) { + ThreadUtil.run(new Runnable() { + + @Override + public void run() { + LogHelper.requestTime(url, params, responseTime); + } + }); + } + + } catch (Throwable e) { + LogHelper.errorDetailInfo(e, getHttpServletParams(request), request.getRequestURI().toString()); + out.print(JsonUtil.loadFalseResult(90009, "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�")); } return obj; } else { @@ -109,7 +134,7 @@ data.put("msg", "绛惧悕閿欒"); out.print(data); out.close(); - LogHelper.error("绛惧悕閿欒:" + getHttpServletParams(request)); + LogHelper.error("绛惧悕閿欒:" + request.getRequestURI() + "-" + getHttpServletParams(request)); return null; } } @@ -168,9 +193,9 @@ while (its.hasNext()) { String key = its.next(); - if (key.equalsIgnoreCase("callback")) { - fromWEB = true; - } + // if (key.equalsIgnoreCase("callback")) { + // fromWEB = true; + // } if (key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("callback") || key.equalsIgnoreCase("_")) { continue; @@ -196,4 +221,24 @@ } } + public static boolean signIsRight(JSONObject json) { + List<String> list = new ArrayList<>(); + for (Iterator<String> its = json.keySet().iterator(); its.hasNext();) { + String key = its.next(); + list.add(key + "=" + json.optString(key)); + } + Collections.sort(list); + String str = ""; + for (String st : list) { + str += st + "&"; + } + String sign = StringUtil.Md5(str + KEY); + if (sign.equalsIgnoreCase(json.optString("sign"))) { + return true; + } else { + return false; + } + + } + } -- Gitblit v1.8.0