그룹웨어 - 인터셉터 구현

지환·2024년 1월 20일
0

그룹웨어

목록 보기
12/17
post-thumbnail

출처| 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

  1. preHandle은 컨트롤러에 접근하기 전에 작동하는 선처리 부분이라고 이해하고 설계했음.

  2. 그렇다면 뭘 할 수 있을까?

    • 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 잘 동작하는지 확인 ㅎㅎ

[사용자]

Animation

[관리자]

profile
아는만큼보인다.

0개의 댓글