본문 바로가기
실습기록

7월 31일 project - session 로그아웃 처리

by project100 2023. 8. 1.

preHandle() - 메서드 호출 전 (return false이면 이후는 실행하지 않고 종료된다.)

postHandle() - 메서드 호출 후

 

addInterceptor : 등록할 인터셉터 설정

addPathPatterns : 적용할 url 패턴 설정

excludePathPatterns : 인터셉터를 제외할 url 패턴 등록 

 

 

 

로그아웃 후 뒤로 가기 시 캐쉬 삭제

 

config - 로그아웃만 처리

import com.raspberry.board.Util.SessionInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    SessionInterceptor interceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).excludePathPatterns(/**) 
    }
}

 

util - 로그 아웃만 처리

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

@Component
@Slf4j
public class SessionInterceptor implements AsyncHandlerInterceptor {
    // 로그인 전에 처리하는 메소드
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("preHandle()");

        HttpSession session = request.getSession();

        if(session.getAttribute("mb") == null){
            log.info("interceptor - 로그인 안함");
            response.sendRedirect("/");
            return false;
        }
        return true;
    }
    // 로그아웃 후에 처리하는 메소드

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle()");
        if(request.getProtocol().equals("HTTP/1.1")){
            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        } else {
            response.setHeader("Pragma", "no-cache");
        }
    }
}