//쿠키에 시간 정보를 주지 않으면 세션 쿠키(브라우저 종료시 모두 종료)
Cookie idCookie = new Cookie("memberId",
String.valueOf(loginMember.getId()));
response.addCookie(idCookie);
세션에 멤버 아이디를 담음.
그리고 쿠키는 JSESSIONID로, 유추하기 어려운 값을 담아서 씀. 물론 세션 쿠키.
HttpSession
테스트 하는 메서드가 HttpServletResponse나 Request를 사용하는 경우에는?
MockHttpServletResponse response = new MockHttpServletResponse(); Member member = new Member(); sessionManager.createSession(member, response);
//요청에 응답 쿠키 저장
MockHttpServletRequest request = new MockHttpServletRequest(); request.setCookies(response.getCookies());
HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 //로그인 사용자
HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터(적절하지 않은 요청이라 판단, 컨트롤러 호출 X) // 비 로그인 사용자

일단 쓰려면
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.order(1)
.addPathPatterns("/**")
.excludePathPatterns("/css/**", "/*.ico", "/error");
}
//...
}
ArgumentResolver를 직접 구현해서, @Login과 같은 어노테이션을 커스텀하게 만들수 있음.(로그인 유저면 해당 멤버 인스턴스 반환, 없으면 널 처리)
좋은 글 잘 읽었습니다, 감사합니다.