Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바
- QueryDSL
- 스프링 핵심 기능
- SpringBoot
- AOP
- 스프링 핵심 원리
- Spring Boot
- 김영한
- Exception
- transaction
- java
- spring
- Greedy
- JDBC
- http
- kotlin
- 스프링
- db
- Proxy
- 알고리즘
- 그리디
- pointcut
- springdatajpa
- 인프런
- jpa
- Android
- Thymeleaf
- JPQL
- Servlet
- 백준
Archives
- Today
- Total
개발자되기 프로젝트
[로그인] 로그인 처리 - 세션 적용 본문
기존에 사용된 쿠키 방식을 session으로 변경해보자.
1. LoginController
- loginV2()
@PostMapping("/login")
public String loginV2(@Validated @ModelAttribute("loginForm") 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", "id 또는 pw가 맞지 않습니다.");
return "login/loginForm";
}
//로그인 성공 처리
//세션 관리자를 통해 세션을 생성, 회원 데이터 보관
sessionManager.createSession(loginMember, response);
return "redirect:/";
}
- logoutV2()
- 로그아웃시, 세션을 만료하고 홈으로 이동.
@PostMapping("/logout")
public String logoutV2(HttpServletRequest request){
sessionManager.expire(request);
return "redirect:/";
}
2. HomeController
- homeLoginV2()
- 세션에 회원 정보가 없는 경우 일반 home으로 이동
- 세션에 회원 정보가 있는 경우 loginHome으로 이동.
- 즉 만약 회원 정보가 없으면, 쿠키나 세션이 없는 것 이므로 로그인 되지 않은 것으로 처리
@GetMapping("/")
public String homeLoginV2(HttpServletRequest request, Model model){
//세션 관리자에 저장된, 회원 정보 조회
Member member = (Member) sessionManager.getSession(request);
//세션에회원 정보가 없는 경우. -> 일반 home
if(member == null){
return "home";
}
//세션에 회원 정보가 있는 경우.-> login home
model.addAttribute("member", member);
return "loginHome";
}
3. 실행
- 로그인 성공시 Response Hedaers에 cookie가 생성된것을 확인이 가능.
- mySessionId에 값이 추가되었다. 기존에 사용된 id가 아니다.
- home으로 다시 이동하면 RequestHeaders에 mySessionId가 있는걸 볼 수 있음.
- 쿠키 값을 임의로 변경하면???
- 로그인 안한 홈 화면으로 보내버림.
4. 정리
- 세션은 특별한 것이 아니라 단지 쿠키를 사용하는데, 서버에서 데이터를 유지하는 방법임.
- 매 번 세션 개을 개발하기는 귀찮음.
- 그래서 서블릿도 세션 개념을 지원한다.
5. GitHub : 210925 login & Session
'인프런 > [인프런] 스프링 MVC 2' 카테고리의 다른 글
[로그인] 로그인 처리 - Servlet HttpSession 2 (0) | 2021.09.26 |
---|---|
[로그인] 로그인 처리 - Servlet HTTP 세션 (0) | 2021.09.26 |
[로그인] 로그인 처리 - 세션 만들기 (0) | 2021.09.26 |
[로그인] 로그인 처리 - 세션 동작 방식 (0) | 2021.09.26 |
[로그인] 쿠키와 보안 문제 (0) | 2021.09.26 |
Comments