package com.doumee.core.annotation.pr;
|
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.utils.Utils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.DigestUtils;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 默认防重复提交实现
|
* @author Eva.Caesar Liu
|
* @date 2022/03/15 09:54
|
*/
|
@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(";");
|
}
|
LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(user !=null){
|
signString.append("loginuserId").append("=").append(user.getId()).append(";");
|
}
|
<<<<<<< HEAD
|
|
=======
|
String apiToken = String.valueOf(request.getHeader("token"));
|
if(StringUtils.isNotBlank(apiToken)){
|
signString.append("apiToken").append("=").append(apiToken).append(";");
|
}
|
>>>>>>> 7f2749f8bb57290104636f50de4824ad1f13cdd5
|
// 参数签名
|
return DigestUtils.md5DigestAsHex(signString.toString().getBytes());
|
}
|
|
/**
|
* 获取参数
|
* @author Eva.Caesar Liu
|
* @date 2022/03/15 09:54
|
*/
|
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("eva-auth-token")));
|
paramMap.put("API_TOKEN", String.valueOf(request.getHeader("token")));
|
paramMap.put("IP", Utils.User_Client.getIP(request));
|
return paramMap;
|
}
|
}
|