인프런 커뮤니티 질문&답변

이용규님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿 필터 - 인증 체크

loginCheckFilter 질문

작성

·

51

·

수정됨

0

@Bean
    public FilterRegistrationBean loginCheckFilter(){
        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();

        //등록할 필터를 지정
        filterRegistrationBean.setFilter(new LoginCheckFilter());
        //필터는 체인으로 등작하기 때문에 순서가 필요. 낮을 수록 먼저 동작
        filterRegistrationBean.setOrder(2);
        //필터를 적용할 URL 패턴을 지정. 한번에 여러 패턴을 지정 가능
        filterRegistrationBean.addUrlPatterns("/*");

        return filterRegistrationBean;
    }
}

에서
@Bean

public FilterRegistrationBean loginCheckFilter(){ 의

loginCheckFilter가 컨트롤러 ,

filterRegistrationBean.setFilter(new LoginCheckFilter());

의 new LoginCheckFilter()); 부분이 호출하는 필터 가 맞나요?

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 이용규님.

질문하신 내용을 바탕으로 필터 설정과 관련된 부분을 설명드리겠습니다.

올려주신 코드는 스프링 환경에서 FilterRegistrationBean을 사용하여 필터를 등록하는 예시입니다. 여기서 @Bean 애노테이션이 붙은 loginCheckFilter() 메서드는 FilterRegistrationBean<Filter> 타입의 빈을 생성하여 스프링 컨테이너에 등록합니다.

@Bean
public FilterRegistrationBean loginCheckFilter() {
    FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
    filterRegistrationBean.setFilter(new LoginCheckFilter());
    filterRegistrationBean.setOrder(2);
    filterRegistrationBean.addUrlPatterns("/*");
    return filterRegistrationBean;
}
  • filterRegistrationBean.setFilter(new LoginCheckFilter()); 부분은 LoginCheckFilter 인스턴스를 생성하여 필터로 등록하는 작업을 합니다.
  • loginCheckFilter 메서드 자체는 이 FilterRegistrationBean을 빈으로 등록하기 위해 존재하는 메서드입니다.

따라서 new LoginCheckFilter() 부분이 LoginCheckFilter 클래스를 필터로 등록하도록 하는 코드가 맞습니다. 이 필터는 웹 요청이 해당 URL 패턴(/*)에 매칭될 때마다 실행됩니다.

관련된 다른 질문과 답변을 참고하시기 바랍니다:

  1. 필터 등록시 @Configuration과 @Bean

    • @Configuration 애노테이션과 @Bean 메서드로 필터를 등록하는 과정에 대한 설명이 포함됩니다.
  2. 서블릿 필터 - 인증 체크 질문입니다.

    • LoginCheckFilter에 대한 설정 및 작동 방식에 대한 추가적인 예시가 포함됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.