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.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 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(";"); } // 参数签名 return DigestUtils.md5DigestAsHex(signString.toString().getBytes()); } /** * 获取参数 * @author Eva.Caesar Liu * @date 2022/03/15 09:54 */ 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; } }