login : login with my session
This commit is contained in:
@@ -2,6 +2,7 @@ package hello.login.web;
|
||||
|
||||
import hello.login.domain.member.Member;
|
||||
import hello.login.domain.member.MemberRepository;
|
||||
import hello.login.web.session.SessionManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@@ -9,19 +10,23 @@ 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){
|
||||
return "home";
|
||||
@@ -36,4 +41,19 @@ public class HomeController {
|
||||
model.addAttribute("member", loginMember);
|
||||
return "loginHome";
|
||||
}
|
||||
|
||||
// 직접 세션 생성
|
||||
@GetMapping("/")
|
||||
public String homeLogin2(HttpServletRequest request, Model model) {
|
||||
|
||||
// 세션 조회
|
||||
Member member = (Member) sessionManager.getSession(request);
|
||||
|
||||
if (member == null) {
|
||||
return "home";
|
||||
}
|
||||
|
||||
model.addAttribute("member", member);
|
||||
return "loginHome";
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package hello.login.web.login;
|
||||
|
||||
import hello.login.domain.login.LoginService;
|
||||
import hello.login.domain.member.Member;
|
||||
import hello.login.web.session.SessionManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.validation.BindingResult;
|
||||
@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
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;
|
||||
|
||||
@@ -18,13 +20,15 @@ import javax.validation.Valid;
|
||||
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()) {
|
||||
return "login/loginForm";
|
||||
@@ -45,13 +49,37 @@ public class LoginController {
|
||||
|
||||
return "redirect:/";
|
||||
}
|
||||
|
||||
@PostMapping("/logout")
|
||||
// @PostMapping("/logout")
|
||||
public String logout(HttpServletResponse response) {
|
||||
expireCookie(response, "memberId");
|
||||
return "redirect:/";
|
||||
}
|
||||
|
||||
|
||||
// 세션 직접 생성 로그인
|
||||
@PostMapping("/login")
|
||||
public String login2(@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:/";
|
||||
}
|
||||
@PostMapping("/logout")
|
||||
public String logout2(HttpServletRequest request) {
|
||||
sessionManager.expire(request);
|
||||
return "redirect:/";
|
||||
}
|
||||
|
||||
private void expireCookie(HttpServletResponse response, String cookieName) {
|
||||
Cookie cookie = new Cookie(cookieName, null);
|
||||
cookie.setMaxAge(0);
|
||||
|
||||
Reference in New Issue
Block a user