Skip to content

Commit

Permalink
로그인 처리하기 - 직접 만든 세션 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
kiteB committed Oct 1, 2021
1 parent cb1f873 commit e4031b9
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 3 deletions.
20 changes: 19 additions & 1 deletion login/src/main/java/hello/login/web/HomeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,30 @@

import hello.login.web.member.Member;
import hello.login.web.member.MemberRepository;
import hello.login.web.session.SessionManager;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;

@Slf4j
@Controller
@RequiredArgsConstructor
public class HomeController {

private final MemberRepository memberRepository;
private final SessionManager sessionManager;

// @GetMapping("/")
public String home() {
return "home";
}

@GetMapping("/")
// @GetMapping("/")
public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model) {

if (memberId == null) {
Expand All @@ -38,4 +42,18 @@ public String homeLogin(@CookieValue(name = "memberId", required = false) Long m
return "loginHome";
}

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

//세션 관리자에 저장된 회원 정보 조회
Member member = (Member)sessionManager.getSession(request);
if (member == null) {
return "home";
}

//로그인
model.addAttribute("member", member);
return "loginHome";
}

}
35 changes: 33 additions & 2 deletions login/src/main/java/hello/login/web/login/LoginController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import hello.login.domain.login.LoginService;
import hello.login.web.member.Member;
import hello.login.web.session.SessionManager;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
Expand All @@ -11,6 +12,7 @@
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

Expand All @@ -20,13 +22,14 @@
public class LoginController {

private final LoginService loginService;
private final SessionManager sessionManager;

@GetMapping("/login")
public String loginForm(@ModelAttribute("loginForm") LoginForm form) {
return "login/loginForm";
}

@PostMapping("/login")
// @PostMapping("/login")
public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) {

if (bindingResult.hasErrors()) {
Expand All @@ -50,12 +53,40 @@ public String login(@Valid @ModelAttribute LoginForm form, BindingResult binding
return "redirect:/";
}

@PostMapping("/logout")
@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? {}", loginMember);

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

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

return "redirect:/";
}

// @PostMapping("/logout")
public String logout(HttpServletResponse response) {
expireCookie(response, "memberId");
return "redirect:/";
}

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

private void expireCookie(HttpServletResponse response, String cookieName) {
Cookie cookie = new Cookie(cookieName, null);
cookie.setMaxAge(0);
Expand Down

0 comments on commit e4031b9

Please sign in to comment.