Closed yejun95 closed 10 months ago
개념
로그인 성공 시 서버가 쿠키에 사용자 정보를 넣어줌
클라이언트 측에서는 다음 요청을 할 때마다 이 쿠키를 서버에 같이 보내줌
서버에서는 이 쿠키를 확인해 로그인 했는지와 유저 정보, 권한 등을 확인할 수 있음
// 쿠키 로그인 기능 구현 @PostMapping("/post/user/cookieLogin") public String memCookieLogin(@RequestBody User vo, HttpServletResponse response) { User mvo = userMapper.memLogin(vo); if(mvo != null) { // 로그인 성공 //쿠키에 시간 정보를 주지 않으면 세션 쿠키가 된다. (브라우저 종료시 모두 종료) Cookie cookie = new Cookie("memId", String.valueOf(vo.getUserId())); cookie.setMaxAge(60 * 60); // 1시간 response.addCookie(cookie); return "good"; } else { // 로그인 실패 return "bad"; } } // 쿠키 로그아웃 @PostMapping("/post/user/cookieLogout") public String memCookieLogout(HttpServletResponse response) { expiredCookie(response, "memId"); return "1"; } private void expiredCookie(HttpServletResponse response, String cookieName) { Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie); }
new Cookie("memberId", String.valueOf(loginMember.getId()));
response.addCookie(idCookie);
setMaxAge : 쿠키 유효 시간 설정
setMaxAge
유효시간을 설정하지 않으면 세션 쿠키가 된다.
유효 시간 설정 : permanent 쿠키 or 영속 쿠키 라고 부른다.
로그아웃
로그인을 했으면 로그아웃도 있어야 한다.
근데 쿠키값이 있어서 자동으로 로그인이 되는데 어떻게 로그아웃을 해야할까?
로그아웃 기능은 쿠키를 삭제하는게 아니라 종료 날짜를 0으로 줘서 바로 만료시킴으로써 삭제할 수 있다.
@Mapper public interface UserMapper { public User memLogin(User vo); // 로그인 체크 }
<select id="memLogin" parameterType="com.example.demo.entity.User" resultType="com.example.demo.entity.User"> select * from tb_user where USER_ID = #{userId} and USER_PW = #{userPw} </select>
서버에서 응답 헤더에 cookie가 담겨져 온다.
로그인한 id 값, 쿠키 만료 시간이 적혀있다.
@GetMapping("/") public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model) { if (memberId == null) { return "home"; } Member loginMember = memberRepository.findById(memberId); if (loginMember == null) { return "home"; } model.addAttribute("member", loginMember); return "loginHome"; }
쿠키는 작은 데이터 파일이다.
Windows10 크롬 기준으로 저장되어 있는 위치
C:\Users\<자신의사용자계정명>\AppData\Local\Google\Chrome\User Data\Default/Network
Reference
Catsbi's DLog : 로그인 처리 1 - 쿠키, 세션
Spring cookie 설정
개념
로그인 성공 시 서버가 쿠키에 사용자 정보를 넣어줌
클라이언트 측에서는 다음 요청을 할 때마다 이 쿠키를 서버에 같이 보내줌
서버에서는 이 쿠키를 확인해 로그인 했는지와 유저 정보, 권한 등을 확인할 수 있음
✔ controller
new Cookie("memberId", String.valueOf(loginMember.getId()));
response.addCookie(idCookie);
setMaxAge
: 쿠키 유효 시간 설정유효시간을 설정하지 않으면 세션 쿠키가 된다.
유효 시간 설정 : permanent 쿠키 or 영속 쿠키 라고 부른다.
로그아웃
로그인을 했으면 로그아웃도 있어야 한다.
근데 쿠키값이 있어서 자동으로 로그인이 되는데 어떻게 로그아웃을 해야할까?
로그아웃 기능은 쿠키를 삭제하는게 아니라 종료 날짜를 0으로 줘서 바로 만료시킴으로써 삭제할 수 있다.
✔ Mapper.java
✔ Mapper.xml
parameterType과 resultType을 VO로 설정한다.
✔ cookie 확인
서버에서 응답 헤더에 cookie가 담겨져 온다.
로그인한 id 값, 쿠키 만료 시간이 적혀있다.
로그아웃
✔ 서버에서 쿠키 조회하기
✔ 쿠키 파일 위치
쿠키는 작은 데이터 파일이다.
Windows10 크롬 기준으로 저장되어 있는 위치
C:\Users\<자신의사용자계정명>\AppData\Local\Google\Chrome\User Data\Default/Network
Reference
Catsbi's DLog : 로그인 처리 1 - 쿠키, 세션