zoukankan      html  css  js  c++  java
  • http接口安全校验


    @Component
    public class MassageInterceptor implements HandlerInterceptor {

    private static final Logger log = LoggerFactory.getLogger(MassageInterceptor.class);

    /**
    * 进入controller层之前拦截请求
    *
    * @param httpServletRequest
    * @param httpServletResponse
    * @param o
    * @return
    * @throws Exception
    */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    // 计算校验值 是否与cs匹配
    String bodyJson = httpServletRequest.getAttribute("postParameter").toString();
    String cs = httpServletRequest.getParameter("cs");
    String openkey = "RIqXkbml6dunptIc";
    String openid = httpServletRequest.getParameter("openid");
    String ts = httpServletRequest.getParameter("ts");
    if (StringUtils.isEmpty(openid)) {
    errorResponse(httpServletResponse, "openid不能为空");
    return false;
    }

    if (StringUtils.isEmpty(ts)) {
    errorResponse(httpServletResponse, "时间戳不能为空");
    return false;
    }
    StringBuilder csBuilder = new StringBuilder()
    .append("Data[").append(bodyJson).append("];")
    .append("openid[").append(openid).append("];")
    .append("openkey[").append(openkey).append("];")
    .append("ts[").append(ts).append("];");
    //logger.info("MD5加密字符串:{}", csBuilder.toString());
    if (!cs.equals(MD5Util.md5(csBuilder.toString()))) {
    exceptionResponse(httpServletResponse, "CS验证不通过");
    return false;
    }
    return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    // log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    //log.info("---------------视图渲染之后的操作-------------------------0");
    }

    private void errorResponse(HttpServletResponse response, String errorMsg) throws Exception {
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/json; charset=utf-8");
    PrintWriter out = response.getWriter();
    HttpResult resultMsg = new HttpResult();
    resultMsg.setCode(HttpResultConstant.HTTP_ERROR);
    resultMsg.setMsg(errorMsg);
    JSONObject obj = JSONObject.fromObject(resultMsg);
    out.append(obj.toString());
    log.info("接口响应:{}", obj.toString());
    }

    private void exceptionResponse(HttpServletResponse response, String errorMsg) throws Exception {
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/json; charset=utf-8");
    PrintWriter out = response.getWriter();
    HttpResult resultMsg = new HttpResult();
    resultMsg.setCode(HttpResultConstant.HTTP_EXCEPTION);
    resultMsg.setMsg(errorMsg);
    JSONObject obj = JSONObject.fromObject(resultMsg);
    out.append(obj.toString());
    log.info("接口响应:{}", obj.toString());
    }

    }
  • 相关阅读:
    使用viewpager实现QQ界面切换效果
    实例教程十一:访问通信录中的联系人和添加联系人
    实例教程十四:视频刻录(调用前置摄像头)
    实例教程十二:为应用添加多个Activity与参数传递
    【30篇突击 android】源码统计八
    GIF动画 汇总帖子+实例
    Android ProgressBar 几乎全部的用法
    实例教程十三:拍照
    android NDK 知识汇总
    【原创】oracle中大数据量更新的测试
  • 原文地址:https://www.cnblogs.com/pengxupx/p/12787349.html
Copyright © 2011-2022 走看看