목록BE (354)
오봉이와 함께하는 개발 블로그
서블릿 필터 - 요청 로그 가장 단순한 필터인, 모든 요청을 로그로 남기는 필터를 개발하고 적용해보자. LogFilter - 로그 필터 package hello.login.web.filter; import lombok.extern.slf4j.Slf4j; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.UUID; @Slf4j public class LogFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, Filt..
서블릿 필터 - 소개 요구사항에는 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 로그인을 하지 않은 사용자에게는 상품 관리 버튼이 보이지 않기 때문에 문제가 없어 보이지만, URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있는 문제가 있다. 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성하면 되겠지만, 등록, 수정, 삭제, 조회 등등 상품관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 더 큰 문제는 로그인과 관련된 로직이 변경될 때마다 작성한 모든 로직을 수정해야 할 수 있다는 점이다. 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정, 삭제, 조회 ..
세션 정보와 타임아웃 설정 세션이 제공하는 정보들을 확인해보자. SessionInfoController package hello.login.web.session; @Slf4j @RestController public class SessionInfoController { @GetMapping("/session-info") public String sessionInfo(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session == null) { return "세션이 없습니다."; } // 세션 데이터 출력 session.getAttributeNames().asIterator() .forEachRemain..
로그인 처리 - 서블릿 HTTP 세션 2 @SessionAttribute 스프링은 세션을 더 편리하게 사용할 수 있도록 @SessionAttribute을 지원한다. 이미 로그인 된 사용자를 찾을 때는 다음과 같이 사용하면 된다. 이 기능은 세션을 생성하지 않는다. @SessionAttribute(name = "loginMember", required = false) Member loginMember HomeController - homeLoginV3Spring() @GetMapping("/") public String homeLoginV3Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMembe..
로그인 처리 - 서블릿 HTTP 세션 1 세션이라는 개념은 대부분의 웹 애플리케이션에서 필요하다. 서블릿은 세션을 위해 HttpSession이라는 기능을 제공하는데, 지금까지 나왔던 문제들을 해결해준다. 직접 구현한 세션의 개념이 이미 구현되어 있고, 잘 구현되어 있다. HttpSession 서블릿이 제공하는 HttpSession도 직접 만든 SessionManager와 같은 방식으로 동작한다. 서블릿을 통해 HttpSession을 새성하면 다음과 같은 쿠키를 생성한다. 쿠키 이름 : JSESSIONID 값 : 추정 불가능한 랜덤 값 JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 HttpSession 사용 서블릿이 제공하는 HttpSession을 사용하도록 개발해보자. S..