1. 程式人生 > >spring boot 攔截器實現防重複提交

spring boot 攔截器實現防重複提交

public class WeiguUrlInterceptor implements HandlerInterceptor {  
      
    public WeiguUrlInterceptor(){  
    }


public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(request.getRequestURI().equals("/checkorder")||request.getRequestURI().contains("payOrderFailList")||request.getRequestURI().contains("zichanorder")){  
           return false;
        }  
         String token =request.getParameter("token"); 
         System.out.println("token::::"+token);
         boolean repeatsubmit=isRepeatSubmit(request);
         if(!repeatsubmit){
        request.getSession(false).removeAttribute("token");
         }
         return !repeatsubmit;
        
}


public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

/*if(modelAndView == null){  
            modelAndView = new ModelAndView("error");  
            throw new Exception("not find this path!!!!!");  
        }  
        System.out.println("-------------- TestUrlInterceptor post url -----------------" + modelAndView.getViewName());*/


}


public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

if(ex != null){  
        } 

}  


  private boolean isRepeatSubmit(HttpServletRequest request) {
  try{
  System.out.println("session:"+request.getSession(false));
       String serverToken =  request.getSession(false).getAttribute("token")+"";
       if (serverToken == null) {
           return true;
       }
       String clinetToken = request.getParameter("token");
       if (clinetToken == null) {
           return true;
       }
       if (!serverToken.equals(clinetToken)) {
           return true;
       }
  }catch(Exception e){
  System.out.println("isRepeatSubmit error");
 return true;
  }
       return false;
   }