Browse Source

科德系统新增同接口1秒访问的限制

anderx 7 months ago
parent
commit
a6287d0c06
1 changed files with 12 additions and 9 deletions
  1. 12 9
      src/main/java/com/goafanti/core/shiro/filter/AdminFilter.java

+ 12 - 9
src/main/java/com/goafanti/core/shiro/filter/AdminFilter.java

@@ -28,24 +28,27 @@ public class AdminFilter extends AccessControlFilter {
 			throws Exception {
 		AftUser token = TokenManager.getToken();
 		if (token instanceof Admin) {
-			//获取接口名称
-			String UrlName = ((HttpServletRequest) request).getRequestURI();
 			//获取访问是post还是get
 			boolean post = ((HttpServletRequest) request).getMethod().equals("POST");
-			String id = token.getId();
-			String tokenTime = redisUtil.getString("tokenTime"+id);
-			if (tokenTime != null){
+			if(post){
+				//获取接口名称
+				String UrlName = ((HttpServletRequest) request).getRequestURI();
+				String id = token.getId();
+				String tokenTime = redisUtil.getString("tokenTime:"+id);
+				if (tokenTime != null){
 				//只限制post请求
-				if(post){
 					//判定接口相同时间小于1秒提示请勿重复提交
-					if (UrlName.equals(tokenTime.split("\\|")[0])){
-						if (System.currentTimeMillis()-Long.valueOf(tokenTime.split("\\|")[1])<1000){
+					String[] split = tokenTime.split("\\|");
+					String s = split[0];
+					if (UrlName.equals(s)){
+						if (System.currentTimeMillis()-Long.valueOf(split[1])<1000){
+							LoggerUtils.debug(CLASS, "请勿重复提交!");
 							shiroFilterUtils.out((HttpServletResponse) response, new Result().error(new Error("请勿重复提交!")));
 						}
 					}
 				}
+			redisUtil.setString("tokenTime:"+id,UrlName+"|"+System.currentTimeMillis());
 			}
-			redisUtil.setString("tokenTime"+id,"|"+UrlName+"|"+System.currentTimeMillis());
 			return Boolean.TRUE;
 		}
 		return Boolean.FALSE;