출처| https://escapefromcoding.tistory.com/93
//인터셉트를 등록한다.
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
WebMvcConfigurer.super.addInterceptors(registry);
TestInterceptor1 inter1 = new TestInterceptor1();
InterceptorRegistration reg1 = registry.addInterceptor(inter1);
//test1에 대한 요청이 오면, Controller로 바로 가지 않고 Interceptor를 들리게 된다.
reg1.addPathPatterns("/test1");
//reg4.addPathPatterns("/test1","/test2");
//reg5.addPathPatterns("/sub1/test3","/sub1/test4");
//reg6.addPathPatterns("/*");
//reg6.addPathPatterns("/sub1/*");
//reg6.addPathPatterns("/**");
//reg6.excludePathPatterns("/*");
}
이렇게 쓴다고 한다.
필자가 설계한 preHandle
preHandle은 컨트롤러에 접근하기 전에 작동하는 선처리 부분이라고 이해하고 설계했음.
그렇다면 뭘 할 수 있을까?
Url를 쪼개는 작업 생각 : 만약에 사용자가 로그인을 하지 않고 특정 경로에 접근했다면, 그 특정 Url를 저장하고 -> 로그인 폼으로 다시 돌아간 다음에 그 url로 리다이렉트하는 생각을 했음. -> Session에 url값을 저장하고 값을 불러오면 되지 않을까? 라고 판단함
"Login" / "/" / "home" 인 경우를 제외하곤, 전부 url 슬라이싱 작업을 해서 기존 사용자가 특정 Url로 바로 접근했던 부분을 저장한다.
내가 생각한 예시
url : http://example.com/WorkConGW/somePage?docId=123 페이지에 접근
if(! currentURLStr.split("WorkConGW")[1] || "/common/home".equals(currentURLStr.split("WorkConGW")[1]))
이 경로에 대한 접근이 아니라면,
somePage?docId=123 이 부분이 짤려서 나오게 되고,
somePage?docId=123 이 부분이 짤려서 나오게 되고, 이 부분을
session에 저장한다. 그 때, Pojo에서 진행 했던 것처럼 somePage와 docId를 Session에 따로 저장했다. 왜 굳이 따로 저장하냐고 묻는다면,
myCurrentURL
은 현재 사용자가 접속한 Url이다.
myCurrentURL
은 사용자가 어떤 페이지에서 로그인 페이지로 이동했는지를 기억하는 데 사용한다.
예를 들어, 사용자가 상품 상세 페이지에서 로그인 페이지로 이동하면, 로그인 후에 상품 상세 페이지로 돌아가기 위해 이 정보가 필요하다.
myCurrentParameter
docId와 같은 특정 파라미터 값을 저장한다.
특정 문서의 ID를 전달해야 하는 경우 이 정보를 저장하여 로그인 후에도 해당 작업 할 수 있도록 설계했다. 추가적으로 같이 저장하게 된다면 유지보수면에서 너무 불편하다.
우선 WebMvcConfig 잘 동작하는지 확인 ㅎㅎ
[사용자]
[관리자]