스프링 레디스 세션 사용법
- 스프링 레디스 세션 적용 이 끝나면 사용이 가능하다.
- 스프링 Http 세션을 사용하는 방법과 별반 다를 게 없다.
세션 속성 설정하기
- 컨트롤러 메서드에 있는
HttpServletRequest
에서HttpSession
을 얻어올 수 있다. - 얻어온 뒤에는
setAttribute()
메서드를 통해 세션을 설정해주면 된다. - 혹은 그냥 파라미터에
HttpSession
타입을 넣어두면, 스프링에서 알아서 주입해준다.
@PostMapping("/login")
public String loginUser(@ModelAttribute User user, HttpServletRequest request) {
// ... (Authentication logic)
// If authentication is successful, store user information in the session
HttpSession session = request.getSession();
session.setAttribute("user", user);
return "redirect:/dashboard";
}
@PostMapping("/login")
public String loginUser(@ModelAttribute User user, HttpServletRequest request, HttpSession session) {
// ... (Authentication logic)
// If authentication is successful, store user information in the session
session.setAttribute("user", user);
return "redirect:/dashboard";
}
세션 값 받아오기
- 설정할 때와 동일하게
HttpServletRequest
에서getSession()
메서드를 통해HttpSession
을 얻어올 수 있다. - 스프링 컨트롤러 파라미터에서
@SessionAttribute
애노테이션을 통해 가져올 수도 있다.@SessionAttribute("sessionKey") Object key
와 같은 형식으로 가져오면 된다.
/**
* @SessionAttribute 사용하지 않는 버전
*/
@GetMapping("/dashboard")
public String dashboard(Model model, HttpServletRequest request) {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user != null) {
model.addAttribute("user", user);
return "dashboard";
} else {
return "redirect:/login";
}
}
@SessionAttribute
를 이용하면 더 짧고 명확하게 가져올 수 있다.
/**
* @SessionAttribute 사용한 버전
*/
@GetMapping("/dashboard")
public String dashboard(@SessionAttribute("user") User user, Model model, HttpServletRequest request) {
if (user != null) {
model.addAttribute("user", user);
return "dashboard";
} else {
return "redirect:/login";
}
}
세션 값 지우기
- 세션 값을 지우는 것도 가능하다.
- 세션 값 하나하나도 레디스의 메모리를 차지하므로 더이상 쓰지 않는다면 지워주는 것이 좋다.
@GetMapping("/logout")
public String logout(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute("user");
return "redirect:/login";
}
세션 만료시키기 (혹은 무효화하기, invalidate)
- 로그아웃 등의 프로세스에 자주 사용되는 세션 만료시키기이다.
- 세션을 만료시키면 해당 세션은 레디스에서 지워진다.
@GetMapping("/logout")
public String logout(HttpServletRequest request) {
HttpSession session = request.getSession();
session.invalidate();
return "redirect:/login";
}
스프링 레디스 세션 동작방식과 적용법
반응형
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
<context:annotation-config> 태그란? (스프링 빈 설정 xml) (0) | 2023.04.21 |
---|---|
스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까? (0) | 2023.04.20 |
스프링 레디스 세션 적용법 (0) | 2023.04.19 |
@EnableRedisHttpSession 은 어떻게 동작하는가? (feat. 스프링 세션에 레디스 활용하기) (0) | 2023.04.19 |
RedirectAttributes 란? (feat. addFlashAttribute 에 대한 설명 포함) (0) | 2023.04.17 |