3가지 저장영역이 있다고 생각하면된다.
세션, request, 쿠키 가 있다.
요청하는 순간 메모리가 생긴다. 그 메모리 영역이 request이다.
응답을 해주면 만들어진 메모리 영역은 없어진다.
쿠키는 브라우저가 가지고 있다.
쿠키는 JavaScript로 접근이 불가능하다. - 브라우저가 막고있다.
쿠키는 브라우저에 무엇인가를 저장하고싶을때 쿠키에 저장한다.
쿠키는 다음 요청을 할때 HTTP의 header에 들고간다.
중요
응답시 Header에 Set-Cookie가 있으면 거기에 있는 정보를 브라우저 쿠키에 넣어준다(자동 저장해준다).
body에 있는 데이터는 쿠키로 못가지고간다 - 이유는 javaScript는 접근이 불가하기 때문이다.
HttpOnly가 체크되어 있으면 자바스크립트로 접근이 불가능하다는 것이다.
체크가 안되어 있으면 자바스크립트로 접근이 가능하다.
________________________________________________________________________________________________
폼 태그 -기본세팅
왼쪽 빨간박스를 복사해서 오른쪽 loginForm 빨간박스에 붙여넣어준다.
화면출력
________________________________________________________________________________________________
1. 체크 박스 전달되는 값이 무엇인지 확인을 해야한다.
- 확인하지 않으면 전달 값이 무엇인지 확인이 불가능 하기 때문이다.
박스체크 O
http://localhost:8000/?remember=on
on이라는 값이 remember에 들어가있는 것이다.
박스체크 X
http://localhost:8000/?
아무것도 날라가지 않는다.
키값이 없기때문에 Remember자체가 null이라는 것이다.
만약 http://localhost:8000/Remember= 날라왔다면
Remember값에 공백이 들어간거다.
2. 로그인 메서드에 전달 값 remember 추가
3. 테스트 - 메서드 전달 값이 잘들어오는지
Remember me를 체크했을때는 true, 체크하지 않았을때는 false가 나오는 것을 개발자 창에서 확인을 한다.
4. Controller의 로그인 부분 수정
로그인 할때 remember 값이 하나 더 추가 되었기 때문에 똑같이 한개 더추가 해준다.
remember값이 디비에 저장되지는 않는다.
5. 값이 제대로 들어오는지 확인
그럼 이제 응답의 header에서 쿠키만 담아주면된다.
6.쿠키값 추가
7.개발자 모드로 확인해보기
응답 헤더로 받은 usrename=ssar을 브라우저가 받으면,
브라우저는 바로 자기의 쿠키영역에 저장을한다.
8. 쿠키 영역 확인
JSESSIONID는 처음으로 서버쪽으로 요청할때 만들어진다.
브라우저는 가지고 있는 쿠키를 항상 header에 담고 서버로 간다.
9. 쿠키추가하는 방법 변경
쿠키를 만드는 코드와 쿠키를 삭제하는 코드를 나눈다.
Cookie cookie = new Cookie("username",loginDto.getUsername());
Cookie객체 생성후 key,value값 삽입
cookie.setMaxAge(60*60*24); //하루
Cookie가 언제까지 브라우저에 있을건지 설정해주는 시간이다.(초단위)
response.addCookie(cookie);
headeCookie에 삽입
테스트
쿠키의 키값이 잘받아오는지 테스트를 해본다.
쿠키의 키값이 잘받아오는지 확인 후
쿠키의 네임이 동일하면 모델에 넣어주면 끝난다.
loginForm에서 id값에 value를 추가해준다.
실행결과
ssar로 Remember me 박스를 체크한다음 로그인하고 다시 로그아웃하고
로그인창으로가 보면 Cookie값을 받아와 자동으로 ssar이 아이디값에 적혀있을 것이다.
'Springboot' 카테고리의 다른 글
게시판만들기 - ajax통신으로 수정하기,삭제하기 (0) | 2022.09.20 |
---|---|
summernote (0) | 2022.09.19 |
게시판 만들기 - 리팩토링(자바스크립트 static 폴더로 이동) (0) | 2022.09.19 |
게시판 만들기 - ajax통신 로그인, 회원수정, 회원탈퇴 (0) | 2022.09.18 |
게시판 만들기 - ajax통신으로 회원가입 (0) | 2022.09.18 |