|
@@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Component
|
|
@Component
|
|
@@ -30,6 +31,18 @@ public class SignAuthInterceptor implements HandlerInterceptor {
|
|
|
ResponseUtils.writeFiled(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "系统异常,请联系管理员!", false);
|
|
ResponseUtils.writeFiled(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "系统异常,请联系管理员!", false);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
+ //重复请求判断
|
|
|
|
|
+ Object timeCache = redisUtils.getCacheObject(request.getHeader("Sign-Id")+"-timestamp");
|
|
|
|
|
+ if(Objects.isNull(timeCache)){
|
|
|
|
|
+ redisUtils.setCacheObject(request.getHeader("Sign-Id")+"-timestamp", timestampStr, RedisConstants.CACHE_NULL_TTL, TimeUnit.MINUTES);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ if(timestampStr.equals(timeCache)){
|
|
|
|
|
+ log.debug("不可多次重复请求...........");
|
|
|
|
|
+ ResponseUtils.writeFiled(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "系统异常,请联系管理员!", false);
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ redisUtils.setCacheObject(request.getHeader("Sign-Id")+"-timestamp", timestampStr, RedisConstants.CACHE_NULL_TTL, TimeUnit.MINUTES);
|
|
|
|
|
+ }
|
|
|
String sign = request.getHeader("sign");
|
|
String sign = request.getHeader("sign");
|
|
|
if (StringUtils.isBlank(sign)) {
|
|
if (StringUtils.isBlank(sign)) {
|
|
|
log.debug("sign不能为空...........");
|
|
log.debug("sign不能为空...........");
|
|
@@ -37,7 +50,7 @@ public class SignAuthInterceptor implements HandlerInterceptor {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
//获取redis存入的sign
|
|
//获取redis存入的sign
|
|
|
- Object cacheObject = redisUtils.getCacheObject(CommonUtil.getIpAddress(request));
|
|
|
|
|
|
|
+ Object cacheObject = redisUtils.getCacheObject(request.getHeader("Sign-Id"));
|
|
|
if (Objects.isNull(cacheObject)) {
|
|
if (Objects.isNull(cacheObject)) {
|
|
|
log.debug("sign签名失效...........");
|
|
log.debug("sign签名失效...........");
|
|
|
ResponseUtils.writeFiled(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "系统异常,请联系管理员!", false);
|
|
ResponseUtils.writeFiled(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "系统异常,请联系管理员!", false);
|