로그인 유지 박스를 체크하고 로그인을 진행하면 브라우저에 쿠키가 남아 계속해서 로그인 상태를 유지 한다.
단, 로그아웃이나 쿠키 시간 만료라면 재 로그인이 필요하다.
✂️로그인 전 (쿠키 생성 x)
✂️로그인시 자동 로그인 체크 후 (쿠키 생성 o)
로그인 성공시 마이페이지로 변경
로그인 성공시 세션/쿠키 생성
✔️3.자동 로그인 기능
<input type="checkbox" name="autoLogin">로그인 유지
로그인 페이지에 추가한다.
@PostMapping("user_check")
public String userCheck(@RequestParam String id, @RequestParam String pwd,
@RequestParam(required = false) String autoLogin, //자동로그인
RedirectAttributes rs) {
int result = ms.userCheck(id,pwd);
//result=0이면 성공(rs로 id, autoLogin넘기기)
if(result == 0) {
rs.addAttribute("id",id);
rs.addAttribute("autoLogin",autoLogin);
return "redirect:successCheckLogin"; //바로 로그인성공페이지
}else { //로그인 체크 실패시
return "redirect:login"; //다시 로그인페이지로
}
}
로그인 확인하는 코드에 자동로그인 코드를 추가하는데 박스에 체크가 되지 않은것이 기본으로 @RequestParam
으로 받는다.
result가 0이면 성공으로 rs로 자동로그인을 넘긴다.
@GetMapping("successCheckLogin")
public String successCheckLogin(@RequestParam String id,
@RequestParam(required = false) String autoLogin,
HttpSession session, HttpServletResponse response) { //로그인 사용자라면 쿠키 응답하기
session.setAttribute(LOGIN, id);
쿠키 생성 코드 생략( 이전 편에서 다루었다.)
ms.keepLogin(session.getId(), limitDate, id); //db에 저장하기 위해 ms로 메소드 만들기
}
return "index";
}
public void keepLogin(String sessionId, Date limitDate, String id);
public void keepLogin(String sessionId, Date limitDate, String id) {
Map<String, Object>map = new HashMap<String, Object>();
map.put("sessionId", sessionId);
map.put("limitDate", limitDate);
map.put("id",id);
memberMapper.keepLogin(map);
}
자동 로그인 체크시 세션아이디, 쿠키 ,아이디가 전부 map에 저장되고 그 값들을 매퍼로 넘긴다.
public void keepLogin(Map<String, Object>map);
<update id="keepLogin">
update box_member set session_id=#{sessionId}, limit_time=#{limitDate}
where buser_id=#{id}
</update>
사용자가 들어온 값이니 기존의 값에서 update
를 사용해 업데이트 해줘야한다.