목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
세션 정보와 타임아웃 설정 세션이 제공하는 정보들을 확인해보자. 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..
로그인 처리 - 직접 만든 세션 적용 지금까지 개발한 세션 관리 기능을 실제 웹 애플리케이션에 적용해보자. LoginController - loginV2() @PostMapping("/login") public String loginV2(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); log.info("login? {}", lo..
로그인 처리 - 세션 직접 만들기 세션을 직접 개발해서 사용해보자. 세션 관리는 크게 3가지 기능을 제공하면 된다 세션 생성 sessionId 생성(임의의 추정 불가능한 랜덤 값) 세션 저장소에 sessionId와 보관할 값 저장 sessionId로 응답 쿠키를 생성해서 클라이언트에 전달 세션 조회 클라이언트가 요청한 sessionId 쿠키의 값으로 세션 저장소에 보관한 값 조회 세션 만료 클라이언트가 요청한 sessionId 쿠키의 값으로 세션 저장소에 보관한 sessionId와 값 제거 SessionManager - 세션 관리 @Component public class SessionManager { private static final String SESSION_COOKIE_NAME = "mySess..