Das Springboot-Backend verwendet das Formularformular, um doppelten Übermittlungscode zu verhindern

  1. redisCache
  2. Schlüssel: Wert;
    Die Informationen (Text und Zeit) der im Wert gespeicherten Anforderungsdaten werden
    verglichen, sofern vorhanden, der Anforderungsparameter und die Sendezeit.
    Wenn es nicht vorhanden ist, geben Sie die Anforderungsinformationen und die Sendezeit direkt in redisCache ein
private int intervalTime = 10;

public void setIntervalTime(int intervalTime)
{
    
    
    this.intervalTime = intervalTime;
}
public boolean isRepeatSubmit(HttpServletRequest request)
{
    
    
    // 本次参数及系统时间
    RepeatedlyRequestWrapper repeatedlyRequest = (RepeatedlyRequestWrapper) request;
    String nowParams = HttpHelper.getBodyString(repeatedlyRequest);

    // body参数为空,获取Parameter的数据
    if (StringUtils.isEmpty(nowParams))
    {
    
    
        nowParams = JSONObject.toJSONString(request.getParameterMap());
    }
    Map<String, Object> nowDataMap = new HashMap<String, Object>();
    nowDataMap.put(REPEAT_PARAMS, nowParams);
    nowDataMap.put(REPEAT_TIME, System.currentTimeMillis());

    // 请求地址(作为存放cache的key值)
    String url = request.getRequestURI();

    HttpSession session = request.getSession();
    Object sessionObj = redisCache.getCacheObject(SESSION_REPEAT_KEY);
    if (sessionObj != null)
    {
    
    
        Map<String, Object> sessionMap = (Map<String, Object>) sessionObj;
        if (sessionMap.containsKey(url))
        {
    
    
            Map<String, Object> preDataMap = (Map<String, Object>) sessionMap.get(url);
            if (compareParams(nowDataMap, preDataMap) && compareTime(nowDataMap, preDataMap))
            {
    
    
                return true;
            }
        }
    }
    Map<String, Object> cacheMap = new HashMap<String, Object>();
    cacheMap.put(url, nowDataMap);
    redisCache.setCacheObject(SESSION_REPEAT_KEY, cacheMap, intervalTime, TimeUnit.SECONDS);
    return false;
}

Ich denke du magst

Origin blog.csdn.net/wangleisuiqiansuiyue/article/details/109191737
Empfohlen
Rangfolge