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
관리 메뉴

개발자되기 프로젝트

[로그인] Spring Interceptor - 인증 체크 본문

인프런/[인프런] 스프링 MVC 2

[로그인] Spring Interceptor - 인증 체크

Seung__ 2021. 9. 27. 19:54

1. LoginCheckInterceptor


  • 인증은 controller호출 전에만 진행되면 된다.
  • preHandle만 구현하자.
  • 미인증 사용자 요정이 들어온 경우 preHandler()은 false를 return하여 더 이상 진행하지 않는다.
@Slf4j
public class LoginCheckInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestURI = request.getRequestURI();

        log.info("인증 체크 인터셉터 실행 {}", requestURI);

        HttpSession session = request.getSession();
        if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null){
            log.info("미인증 사용자 요청");
            //로그인으로 redirect
            response.sendRedirect("/login?redirectURL="+requestURI);
            return false;
        }

        return true;
    }
}

 

 

2. Interceptor 등록


  • addInterceptors()에 하나 더 추가하면 끝!
  • url 패턴을 상세하게 지정할 수 있다. ㄱㅇㄷ
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogInterceptor())
                .order(1)
                .addPathPatterns("/**")
                .excludePathPatterns("/css/**", "/*.ico", "/error");

        registry.addInterceptor(new LoginCheckInterceptor())
                .order(2)
                .addPathPatterns("/**")
                .excludePathPatterns("/", "/members/add", "/login", "/logout", "/css/**", "/*.ico", "/error");
    }
 }

 

 

3. 정리


  • Servlet Filter와 SpringInterceptor는  Web과 관련된 공통 관심사를 해결하기 위한 기술!
  • 특별한 문제가 없다면 SpringInterceptor 사용하자 오히려좋아.

 

4. GitHub : 210927 Spring Interceptor


 

GitHub - bsh6463/login

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

github.com

 

Comments