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 dm
|
* @since 2025/03/31 16:44
|
*/
|
@Slf4j
|
@Component
|
public class PreventRepeatDefaultHandler extends PreventRepeatAdapter {
|
|
@Override
|
public String sign(HttpServletRequest request) {
|
// 获取参数
|
Map<String, Object> 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<String, Object>
|
*/
|
private Map<String, Object> getParameters(HttpServletRequest request) {
|
HashMap<String, Object> paramMap = new HashMap<>();
|
paramMap.put("REQUEST_URI", request.getRequestURI());
|
paramMap.put("USER_TOKEN", String.valueOf(request.getHeader("doumee-auth-token")));
|
paramMap.put("IP", Utils.User_Client.getIP(request));
|
return paramMap;
|
}
|
}
|