[spring 팀프로젝트] - 웹사이트 제작 4. 로그인

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


저장된 아이디와 비밀번호로 로그인 성공시 로그인 버튼은 마이페이지로 변경되며 잘못된 정보 입력시 로그인 페이지는 넘어가지 않는다.


✂️로그인 페이지

✂️로그인 전

✂️로그인 후


🧩로그인


✔️ 1. 로그인 성공시 마이페이지로 변경
2. 로그인 성공시 세션/쿠키 생성
3. 자동 로그인 기능


🎨jsp

<form action="/root/member/user_check" method="post">
       <div class="user-box">
           <input type="text" name="id" id="id" required="">
           <label for="id">아이디</label>
       </div>
       <div class="user-box">
           <input type="password" name="pwd" id="pwd" required="" class="user-margin">
           <label for="pwd">비밀번호</label>
       </div>
       <div class="save-find">
	       <input type="checkbox" name="autoLogin" class="check-box">로그인 유지
       </div>
		<button type="submit" id="btn">로그인</button>
        	 <ul class="member-join">
        		 <li><a href="register_form">회원가입</a></li>
         	</ul>
</form>

아이디/비밀번호를 입력하고 버튼을 클릭하면 submit 으로 넘기고 해당 폼은 post방식으로 컨트롤러를 연결한다.


📕Controller

  • 로그인 페이지 연결 코드는 생략
//로그인시 확인
	@PostMapping("user_check")
	public String userCheck(@RequestParam  String id,@RequestParam  String pwd,
			RedirectAttributes rs) {  //id, pwd 받아줄것
		int result = ms.userCheck(id,pwd); //서비스로 id,pwd넘기기
		System.out.println("result : " +result); //result확인

		//result=0이면 성공(rs로 id넘기기)
		if(result == 0) {
			rs.addAttribute("id",id);
			return "redirect:successCheckLogin"; //바로 로그인성공페이지
		}else { //로그인 체크 실패시
			return "redirect:login"; //다시 로그인페이지로
		}
	}

로그인 페이지에서 컨트롤러 user_check로 값을 넘기고 이 값을 받는 방법인
1.dto 2.param 3.request 3가지 중에서 @RequestParam으로 아이디, 비밀번호를 받아주었다.

service로 넘길 아이디/비밀번호를 int형 변수 result에 담아 result가 0이면 성공이라 RedirectAttributes로 아이디를 넘기고 로그인 성공 페이지롤 보여준다.
하지만 로그인 실패시 다시 로그인 페이지로 이동한다.


📕Service/serviceImpl

public int userCheck(String id, String pwd);
@Autowired memberMapper memberMapper;
public int userCheck(String id, String pwd) {
		memberDTO dto =  memberMapper.userCheck(id);
		if(dto !=null) {//dto가 있다면
			if(pwEncoder.matches(pwd, dto.getPwd())) { //사용자값, dto에 있는 값 비교하기
				return 0;//성공
			}
		}
		return 1;//실패하면 1반환
	}

@Autowired로 mapper를 연결해주고 mapper로 보낼 아이디를 dto에 넣고 dto가 있다면 사용자가 입력한 값과 dto에 있는 값을 비교해 성공으로 0을 반환하고 없다면 실패로 1을 반환한다.


📕mapper.java

public memberDTO  userCheck(String id); //dto전달하기

📕mapper.xml

  • dto변수와 db에 있는 컬럼명을 매핑 작업을 먼저 해주어야한다.(코드는 생략)
<select id="userCheck" resultMap="member">
		select * from box_member where buser_id=#{id}  
</select>

해당하는 아이디와 같은 결과값을 가져오고 resultMap으로 리턴값은 member형식에 맞추었다.


profile
꾸준히 성장하는 개발자

0개의 댓글