[Spring] 스프링 MVC 2편 6-10. 로그인 처리하기 - 직접 만든 세션 적용

강우엉·2023년 8월 17일

Spring

목록 보기
194/359

지금까지 개발한 세션 관리 기능을 실제 웹 애플리케이션에 적용해보자.

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());

        if (loginMember == null) {
            bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
            return "login/loginForm";
        }

        //로그인 성공 처리

        //세션 관리자를 통해 세션을 생성하고 회원 데이터보관
       sessionManager.createSession(loginMember, response);

        return "redirect:/";

    }
  • private final SessionManager sessionManager; 주입
  • sessionManager.createSession(loginMember, response);
    로그인 성공시 세션을 등록한다. 세션에 loginMember 를 저장해두고, 쿠키도 함께 발행한다.

LoginController - logoutV2()

 	@PostMapping("/logout")
    public String logoutV2(HttpServletRequest request) {
        sessionManager.expire(request);
        return "redirect:/";
    }

로그 아웃시 해당 세션의 정보를 제거한다.

HomeController - homeLoginV2()

 @GetMapping("/")
    public String homeLoginV2(HttpServletRequest request, Model model) {

        //세션 관리자에 저장된 회원 정보 조회
        Object member = (Member)sessionManager.getSession(request);

        //로그인
        if (member == null) {
            return "home";
        }

        model.addAttribute("member", member);
        return "loginHome";

    }

세션 관리자에서 저장된 회원 정보를 조회한다. 만약 회원 정보가 없으면, 쿠키나 세션이 없는 것 이므로 로그인 되지 않은 것으로 처리한다.

사실 세션이라는 것이 뭔가 특별한 것이 아니라 단지 쿠키를 사용하는데, 서버에서 데이터를 유지하는 방법일 뿐이라는 것을 이해했을 것이다.

profile
우엉이의 코딩 성장일기💻

0개의 댓글