SpringBoot 차단기 구성
5573 단어 SpringBoot
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.