SpringBoot 차단기 구성

5573 단어 SpringBoot
1. URL 기반 차단기:
public class LoginInterceptor extends HandlerInterceptor{	/**www.1b23.com
     *            (Controller      )
     *   URL      
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override  
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String path = request.getServletPath();
        if (path.matches(Const.NO_INTERCEPTOR_PATH)) {        	//                     return true;
        } else {        	//            ,     ,SESSION,     
            System.out.println("====================================");            return true;
        }
    }
}

키 코드:path.matches(Const.NO INTERCEPTOR PATH는 정규와 일치하는 URL을 기반으로 합니다.
import com.example.demo1.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/** *
 *java    www.1b23.com
 * @Package: com.*.*.config * 
 @ClassName: LoginConfig * 
 @Description:     * 
 author: zk * 
 @date: 2019 9 19    2:18:35 *
 /@Configurationpublic class LoginConfig implements WebMvcConfigurer 
 {    @Overridepublic void addInterceptors(InterceptorRegistry registry) 
 {        //  TestInterceptor   InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
        registration.addPathPatterns("/**");                      //        }
}
/**java  www.1b23.com * @author 	BianP
 * @explain    
 */public class Const {  
   public static final String SUCCESS = "SUCCESS"; 
      public static final String ERROR = "ERROR";  
        public static final String FIALL = "FIALL"; 
           /**********************     ****************************/ 
              public static final String SESSION_USER = "loginedAgent"; 
              //         public static final String SESSION_LOGINID = "sessionLoginID"; 
              //   ID    public static final String SESSION_USERID = "sessionUserID"; 
              //       ID      public static final String SESSION_USERNAME = "sessionUserName";
               //       ID      public static final Integer PAGE = 10; 
               //          public static final String SESSION_URL = "sessionUrl";
                //     url    public static final String SESSION_SECURITY_CODE = "sessionVerifyCode";
                 //       
    //           
     public static final int TIMEOUT = 1800;
     //  	public static final String ON_LOGIN = "/logout.htm";	
     public static final String LOGIN_OUT = "/toLogout";    
     //    URL anon:   /authc:       
      public static final String NO_INTERCEPTOR_PATH =".*/((.css)|(.js)|(images)|(login)|(anon)).*";
}

2. 주해 기반 차단기
① 메모를 생성합니다.
/**
 *         Controller         java    www.1b23.com
 */@Target({ElementType.METHOD})//        
@Retention(RetentionPolicy.RUNTIME)//      
public @interface LoginRequired {
	
}

② 차단기 생성:
public class AuthorityInterceptor extends HandlerInterceptorAdapter{	
	 @Override	 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {	 	//                      if (!(handler instanceof HandlerMethod)) {
            return true;
        }        // ①:START         
        HandlerMethod handlerMethod = (HandlerMethod) handler;
        Method method = handlerMethod.getMethod();
        //           
        LoginRequired methodAnnotation = method.getAnnotation(LoginRequired.class);        //   @LoginRequired   ,            if (methodAnnotation != null) {            //            ,     ,SESSION,     
            System.out.println("====================================");            return true;
        }
        return true;
	}
}

셋째, Spring MVC의 설정 파일과 같은 설정에 차단기를 추가합니다.
/**
 *  springmvc webmvc      
 * @author BIANP java    www.1b23.com
 */@Configurationpublic class WebConfigurer implements WebMvcConfigurer {	 @Override	 public void addInterceptors(InterceptorRegistry registry) {        //       ,        @LoginRequired            
        registry.addInterceptor(LoginInterceptor()).addPathPatterns("/**");
        registry.addInterceptor(AuthorityInterceptor()).addPathPatterns("/**");
	 }	 
	 @Bean	 public LoginInterceptor LoginInterceptor() {		 return new LoginInterceptor();
	 }	 
	 @Bean	 public AuthorityInterceptor AuthorityInterceptor() {		 return new AuthorityInterceptor();
	 }
}

1. @Configuration이라는 주석을 꼭 넣어야 합니다. 시작할 때 불러옵니다.
2. 일부 강좌는'WebMvcConfigurer Adapter'를 사용하지만spring5.0 버전 이후 이 클래스는 버려졌습니다. WebMvcConfigurer Adapter는 사용할 수 있지만 보기에 좋지 않습니다.
3. 일부 강좌에서 사용하는 WebMvcConfiguration Support도 있습니다. 사용한 후에classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)가 효력이 발생하지 않는 것을 발견했습니다.구체적인 이유는 다음과 같습니다. WebMvcAutoConfiguration에 조건 설명이 있기 때문입니다.
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

그래서 WebMvcConfigurer를 사용하는 것을 권장합니다. 사실springMVC는 많은것들을springboot로 옮겨서 사용할 수 있습니다. 설정 파일의 패턴을 @Configuration 클래스로 바꾸면 됩니다.
HandlerInterceptor

좋은 웹페이지 즐겨찾기