Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

SpringInterceptor 본문

Project/블로그 게시판 만들기

SpringInterceptor

Seung__ 2021. 10. 15. 00:00
  • 현재 비 로그인 유저의 권한이 없는 페이지 접근을 막기 위해 
  • controller각 메서드에 검증 로직이 추가되어 있다.
  • 사실 controller의 대부분 메서드는 비 로그인 유저가 호출할 권한이 없어야 한다.
  • 이는 공통적인 부분으로 일일히 각 메서드에 추가해주기는.. 번거롭다.
  • Spring Interceptor는 이와 같이 Web에서 공통적인 관심사를 처리하는데 용이하다.
 

[로그인] 스프링 인터셉터

스프링 인터셉터는 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술 해당 기능을 Servlet이 제공하면 ServletFilter, Spring MVC가 제공하는 것은 Spring Iterceptor 웹과 관

bsh-developer.tistory.com

 

1. LoginCheckInterceptor


  • 나중에 로그인 후 현재 페이지로 돌아오기 위해 현재 uri를 queryParameter로 넘겨줌.
@Slf4j
@RequiredArgsConstructor
public class LoginCheckInterceptor implements HandlerInterceptor {

    private final SessionManager sessionManager;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestURI = request.getRequestURI();
        log.info("login 인증 체그 interceptor 실행");

        MemberDto loginMember = (MemberDto) sessionManager.getSession(request);

        if (loginMember == null){
            log.info("비로그인 자용자 접속 시도");

            response.sendRedirect("/login?redirectURL="+requestURI);
            return false;
        }
        return true;
    }
}

 

2. Interceptor 등록


  • excludePathPattern은 해당 interceptor를 사용하지 않을 경로를 지정한다.
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {

    private final SessionManager sessionManager;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new LoginCheckInterceptor(sessionManager))
                .order(1)
                .addPathPatterns("/**")
                .excludePathPatterns("/css/**", "/*.ico", "/error",
                        "/", "/members/new/form", "/posts", "/posts/*",
                        "/login", "/logout");
    }
}

 

 

3. 결과


  • 비로그인 상태 "게시글 목록" 접근
2021-10-14 23:55:15.678 INFO 31528 --- [nio-8080-exec-7] hello.blog.web.PostFormController
: 비 로그인 사용자 접속
  • 비로그인 상태, 게시글 수정 접근 시 로그인 화면으로 이동

 

2021-10-14 23:56:56.114 INFO 31528 --- [nio-8080-exec-3] h.b.w.interceptor.LoginCheckInterceptor
: login 인증 체그 interceptor 실행 2021-10-14 23:56:56.624 WARN 31528 --- [nio-8080-exec-3] 
2021-10-14 23:56:56.626 INFO 31528 --- [nio-8080-exec-3] h.b.w.interceptor.LoginCheckInterceptor
: 비로그인 자용자 접속 시도
  • 이처럼 WEB에서 가지고 있는 공통 관심사는 SpringInterceptor를 활용하도록 하자..

 

4. GitHub: 211014 interceptor


 

GitHub - bsh6463/blog

Contribute to bsh6463/blog development by creating an account on GitHub.

github.com

 

'Project > 블로그 게시판 만들기' 카테고리의 다른 글

Optional  (0) 2021.10.16
Test 추가, gerResultList()  (0) 2021.10.16
관리자 권한  (0) 2021.10.14
인증처리 - 본인이 작성한 것만..  (0) 2021.10.13
비 로그인 사용자 처리  (0) 2021.10.12
Comments