Search
Duplicate

[스프링 게시판] 세션 구현(서블릿)

@3/18/2023

서블릿 세션으로 로그인 유지

스프링으로 세션을 구현하기 전 연습삼아 서블릿으로 구현함

로그인 여부에 따른 헤더 버튼 변경

로그인 전 - 로그인, 회원가입
로그인 후 - 로그아웃, 회원정보
생각보다 쉽지 않을 것 같아 일단 보류
스프링 부트 3.0부터 session 기본 객체를 사용하지 못하기 때문에 모든 컨트롤러에서 이를 넣어줘야 하는데, 중복이 많이 발생할 것 같아 나중에 인터셉터를 이용해야할 것 같음
스프링 시큐리티를 통해 sec:authorize 등으로 해결할 수 있다고 함

URL에 뜨는 JSESSIONID 파라미터 삭제 및 타임아웃 설정

설정에 아래 추가
server: servlet: session: tracking-modes: cookie timeout: 1800
YAML
복사

로그아웃 처리

UserController
@GetMapping("/logout") public String logout(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } return "redirect:/"; }
Java
복사

간단 테스트

로그로 찍어서 확인해봄
@GetMapping("/") public String home(Model model, HttpServletRequest request) { HttpSession session = request.getSession(); if (session != null) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser != null) { log.info("loginUser.getLoginId() = {}", loginUser.getLoginId()); } } return "redirect:/posts"; }
Java
복사