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());
    }

    }
  • 相关阅读:
    app卡顿问题检测--KMCGeigerCounter
    报错---[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**
    键盘工具栏的快速集成--IQKeyboardManager
    iOS 对网络视频采集视频截图
    iOS-label出现未知边框线的bug
    iOS开发中图片方向的获取与更改
    通过代码设置button中文字的对齐方式
    util.date
    统计字符串每个字母的个数
    异常处理之多重catch
  • 原文地址:https://www.cnblogs.com/pengxupx/p/12787349.html
Copyright © 2011-2022 走看看