@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
복사