package com.doumee.core.annotation.pr; import com.doumee.core.servlet.ServletDuplicateInputStream; import com.doumee.core.utils.Utils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.DigestUtils; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * 默认防重复提交实现 * @author Eva.Caesar Liu * @since 2025/03/31 16:44 */ @Slf4j @Component public class PreventRepeatDefaultHandler extends PreventRepeatAdapter { @Override public String sign(HttpServletRequest request) { // 获取参数 Map parameters = this.getParameters(request); // 构建参数签名字符串 StringBuilder signString = new StringBuilder(); for(String key : parameters.keySet()) { signString.append(key).append("=").append(parameters.get(key)).append(";"); } // 参数签名 return DigestUtils.md5DigestAsHex(signString.toString().getBytes()); } /** * 获取参数 * * @param request 请求对象 * @return Map */ private Map getParameters(HttpServletRequest request) { HashMap paramMap = new HashMap<>(); paramMap.put("REQUEST_URI", request.getRequestURI()); paramMap.put("USER_TOKEN", String.valueOf(request.getHeader("eva-auth-token"))); paramMap.put("IP", Utils.User_Client.getIP(request)); return paramMap; } }