studyplan
스프링부트 로그인 만들기 ! 3. HttpSession session 을 통한 로그인 유지 !!cookie를 사용한 자동로그인! 본문
어제 인풋데이터를 가지고 로그인정보를 받아왔고

그 정보를 가지고
memberService.login 까지 가는걸 보았고 그 안에 세션의 생성을 보았다 !

들어올때부터 세션을 들고오고
그 세션에 !
inputData 안에 들어있는 정보로
Member foundMember = memberMapper.findUser(inputData.getAccount());
맴버를 찾아내고 / 그 맴버가있는지 없는지 검증을 한다 ! 그 정보로 로그인 한사람의 정보를
session.setAttribute("loginUser", foundMember);
세션이라는 공간에 , 세팅하는데 "loginUser" 라는이름을 가진// 내가 찾은 맴버 foundMember 를 넣어준다 !
session.setMaxInactiveInterval(60 * 60); // 1시간
그리고 세션에대해 최대시간을 지정해 줌으로써 한시간동안 유지시켜주고 !

inputData 안에 자동로그인 정보를 가져오고
keepLogin메소드를 실행시킨다 ! 메소드를 보자

자동로그인엔! 쿠키가 필요한데 !
Cookie c = new Cookie(LOGIN_COOKIE, sessionId);
쿠키에 세션에 넣어뒀던 로그인 아이디를 넣어주고 ,
int limitTime = 60 * 60 * 24 * 90; // 90일에 대한 초
c.setMaxAge(limitTime);
쿠키의 제한시간을 걸어주고
c.setPath("/"); // 전체경로
쿠키가 어디서 쓰일지 만들어준다 !
response.addCookie(c);
HttpServletResponse response
응답객체 response에 쿠키를 넣어주고


dto 안에는 이런 값이 있는데
계정정보 , 로그인한 아이디 , 제한시간 ! 필드로 이루어져있다
DB에 내가 줬던 쿠키의 값을 넣어주는데
AutoLoginDTO();
자동로그인에대한 정보를 담은 객체에
sessionId 를 넣어주고
long nowTime = System.currentTimeMillis();
현재 날짜를 받아와서
Date limitDate = new Date(nowTime + ((long) limitTime * 1000));
dto.setLimitTime(limitDate);
초단위 시간을 Date객체에 알맞게 변환시켜서
자동로그인 객체에 값을 넣어준다
이제 마지막으로

dto에 계정정보를 담아서

그 유저에 세션아이디와 , 제한시간을 업데이트시켜준다 !
이 과정이 끝나면 세션과,쿠키를 가지고 controller 에 가고 , DB에는 controller에 보낸값이 저장된다 !