로그인,로그아웃 동작처리

·2024년 11월 6일

스프링

목록 보기
13/33
post-thumbnail

원하는 페이지로 가는 기능을 구현하기 위해서는 컨트롤러에서 memberLoginAction 조금 수정할 부분이 있다. 어제 담아놨던 save를 꺼내올 수 있도록 객체를 불러와야 한다.

1. 상단에 세션을 주입받고,

2. if구문을 새로 추가하기. 이렇게 하면 회원목록 페이지 가기를 눌렀을 때, 먼저 로그인 페이지로 이동한뒤에 로그인을 하면 가려던 페이지인 회원목록 페이지로 이동을 할 수 있다.

비밀번호가 일치하면 saveUrl 세션 값이 있는지 확인하고 해당 URL로 리다이렉트하거나 기본 경로로 리다이렉트한다.

전체코드

@RequestMapping(value="memberLoginAction.aws", method=RequestMethod.POST)
	public String memberLoginAction(
			@RequestParam("memberid") String memberid, 
			@RequestParam("memberpw") String memberpw,
			RedirectAttributes rttr, // 리다이렉트 시 일회성 데이터를 전달하기 위한 객체
			HttpSession session		// 세션 객체, 로그인 상태를 유지하는 데 사용
			) {
		
		MemberVo mv = memberService.memberLoginCheck(memberid);
		//저장된 비밀번호를 가져온다. 
		
		// 로그인 후 이동할 경로 초기화
		String path = "";
		if(mv != null) { // 회원 정보가 존재할 경우
		String reservedPw = mv.getMemberpw();  // 저장된 비밀번호를 가져옴
		
		 // 입력한 비밀번호와 저장된 비밀번호를 비교
		 if(bCryptPasswordEncoder.matches(memberpw, reservedPw)) { // 비밀번호가 일치할 경우
			 //System.out.println("비밀번호 일치");
			 rttr.addAttribute("midx",mv.getMidx());
			 rttr.addAttribute("memberId",mv.getMemberid());
			 rttr.addAttribute("memberName",mv.getMembername());
			 
			// 로그인 요청 이전 페이지가 세션에 저장되어 있는지 확인
			 logger.info("saveUrl==> " + session.getAttribute("saveUrl"));
			 
			 if(session.getAttribute("saveUrl") != null) {
				 // 이전 페이지로 리다이렉트
				 path ="redirect:"+ session.getAttribute("saveUrl").toString();
			 }else {
				// 기본 페이지로 리다이렉트
				 path ="redirect:/";
			 }
			 
		  }else {
			  // 비밀번호가 일치하지 않을 경우 경고 메시지를 설정하고 로그인 페이지로 리다이렉트
			  rttr.addFlashAttribute("msg","아이디/비밀번호를 확인해주세요");
			  path = "redirect:/member/memberLogin.aws";
		  }
		}else {
			  // 아이디에 해당하는 회원 정보가 없을 경우 경고 메시지 설정 후 로그인 페이지로 리다이렉트
			  rttr.addFlashAttribute("msg","해당하는 아이디가 없습니다."); //일회성 메소드 메세지가 한 번만 나온다
			path = "redirect:/member/memberLogin.aws";
		}
		//회원정보를 세션에 담는다.
		return path;
	}

로그아웃 처리 기능

<% if (session.getAttribute("midx") != null){
   out.println(session.getAttribute("memberName")+"<a href='"+request.getContextPath()+"/member/memberLogout.aws'>님, 로그아웃</a>");   
} %>

1. 인덱스 페이지로 가서 로그아웃 부분에 링크를 하나 걸어준다.

		@RequestMapping(value="memberLogout.aws", method=RequestMethod.GET)
		public String memberLogout(HttpSession session) {

			session.removeAttribute("midx");
			session.removeAttribute("memberName");
			session.removeAttribute("memberId");
			session.invalidate();
			
			// 회원 목록을 보여줄 뷰 페이지 경로 반환
			return "redirect:/";
		}

2. MemberController로 이동해서 로그아웃 처리 기능 만들기

0개의 댓글