[spring 팀프로젝트] - 웹사이트 제작 4-(2).자동 로그인

JINI·2022년 12월 7일
0
post-thumbnail

로그인 유지 박스를 체크하고 로그인을 진행하면 브라우저에 쿠키가 남아 계속해서 로그인 상태를 유지 한다.
단, 로그아웃이나 쿠키 시간 만료라면 재 로그인이 필요하다.

✂️로그인 전 (쿠키 생성 x)

✂️로그인시 자동 로그인 체크 후 (쿠키 생성 o)


🧩로그인


  1. 로그인 성공시 마이페이지로 변경

  2. 로그인 성공시 세션/쿠키 생성

✔️3.자동 로그인 기능


🎨jsp

<input type="checkbox" name="autoLogin">로그인 유지

로그인 페이지에 추가한다.


📕Controller

@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";
	}

📕Service/serviceImpl

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에 저장되고 그 값들을 매퍼로 넘긴다.


📕mapper.java

public void keepLogin(Map<String, Object>map);

📕mapper.xml

<update id="keepLogin">  
		update box_member set session_id=#{sessionId}, limit_time=#{limitDate}
		where buser_id=#{id}
</update>

사용자가 들어온 값이니 기존의 값에서 update를 사용해 업데이트 해줘야한다.


profile
꾸준히 성장하는 개발자

0개의 댓글