|
|
@@ -5,6 +5,7 @@ import com.goafanti.common.bo.Result;
|
|
|
import com.goafanti.common.model.Admin;
|
|
|
import com.goafanti.common.model.AftUser;
|
|
|
import com.goafanti.common.utils.LoggerUtils;
|
|
|
+import com.goafanti.common.utils.RedisUtil;
|
|
|
import com.goafanti.core.shiro.token.TokenManager;
|
|
|
import org.apache.shiro.web.filter.AccessControlFilter;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -19,12 +20,32 @@ public class AdminFilter extends AccessControlFilter {
|
|
|
|
|
|
@Autowired
|
|
|
private ShiroFilterUtils shiroFilterUtils;
|
|
|
+ @Autowired
|
|
|
+ private RedisUtil redisUtil;
|
|
|
|
|
|
@Override
|
|
|
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)
|
|
|
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 tokenTime = redisUtil.getString("tokenTime");
|
|
|
+ if (tokenTime != null){
|
|
|
+ //只限制post请求
|
|
|
+ if(post){
|
|
|
+ //判定接口相同时间小于1秒提示请勿重复提交
|
|
|
+ if (UrlName.equals(tokenTime.split("\\|")[0])){
|
|
|
+ if (System.currentTimeMillis()-Long.valueOf(tokenTime.split("\\|")[1])<1000){
|
|
|
+ shiroFilterUtils.out((HttpServletResponse) response, new Result().error(new Error("请勿重复提交!")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.setString("tokenTime",UrlName+"|"+System.currentTimeMillis());
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
return Boolean.FALSE;
|