프로젝트

30. 아이디 중복 확인

uni5948 2022. 1. 10. 14:35

30. 아이디 중복 확인

같은 아이디가 가입 되는 것을 방지하기 위해 중복 확인을 추가한다.

 

백엔드(spring)

  • member 저장소에 중복 확인 쿼리문 작성
    // userid 중복 조회
    @Query(value = "SELECT COUNT(USERID) FROM USER WHERE USERID =:userid", nativeQuery = true)
    public int queryCheckUserid(String userid);
  • member 서비스에 중복 확인 생성

1. MemberService

    // userid 중복 확인
    public int checkUserid(String id);
 
2. MemberServiceImpl
 
    // userid 중복 확인
    @Override
    public int checkUserid(String id) {
        return mRepository.queryCheckUserid(id);
    }
 
  • 중복 확인 추가, 회원 가입 수정(MemberController)
    //중복 확인
    //127.0.0.1:8080/REST/member/check
    @RequestMapping(value = "/member/check", method = {RequestMethod.POST},
    consumes = MediaType.ALL_VALUE,
    produces = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> checkPOST(@RequestBody Member member){
        Map<String, Object> map = new HashMap<String, Object>();
        try{
            String userid = member.getUserid();
            int Count = mService.checkUserid(userid);
            if(Count != 0){ //user 중복 체크
                map.put("status", "id 중복");
                map.put("check", 1);
            }
            else{
                map.put("status", "사용 가능");
                map.put("check", 0);
            }
        }
        catch(Exception e){
            e.printStackTrace();
            map.put("status", e.hashCode());
        }
        return map;
    }
    //회원가입
    //127.0.0.1:8080/REST/member/join
    @RequestMapping(value = "/member/join", method = {RequestMethod.POST},
    consumes = MediaType.ALL_VALUE,
    produces = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> joinPOST(@RequestBody Member member){
        Map<String, Object> map = new HashMap<String, Object>();
        try{
            BCryptPasswordEncoder bcpe = new BCryptPasswordEncoder();
            String userid = member.getUserid();
            int Count = mService.checkUserid(userid);   //중복 체크(중복이 없다면 0 출력)
            if(Count != 0){
                map.put("status", "id 중복");
                map.put("check", 1);
            }
            else{
                member.setUserpw(bcpe.encode(member.getUserpw()));
                member.setUserrole("USER"); //관리자는 1명이고 이후엔 전부 USER이므로 ROLE에 USER로 SET 한다.
                mService.insertUser(member);
                map.put("status", 200);
            }
        }
        catch(Exception e){
            e.printStackTrace();
            map.put("status", e.hashCode());
        }
        return map;
    }
  • 중복 확인

1. 중복 아닐 경우

중복 확인

2. 중복 일 경우

중복 확인

3. 회원 가입 시 중복 있을 경우

회원 가입 시 중복 있을 경우

프론트 엔드(vue)

 

  • Join.vue에 중복 확인 용 버튼 생성
<template>
    <div>
        <h3>회원 가입</h3>
        아이디 <input type="text" v-model="userid" placeholder="아이디 입력"/>
        <input type="button" @click="handleCheck" value="중복 확인" /><br /> <- 중복 확인 버튼 생성
        비밀번호 <input type="password" v-model="userpw" placeholder="비밀번호 입력"/><br />
        이름 <input type="text" v-model="username" placeholder="이름 입력"/><br />
        <input type="button" @click="handleJoin" value="회원가입" />
    </div>
</template>
 
 
  • 중복 확인, 회원 가입 버튼 클릭 시 중복 확인 구현

 

            async handleCheck() {
                const url = "/REST/member/check";
                const headers = {"Content-Type":"application/json"}
                const body = {
                    userid : this.userid
                }
                const response = await axios.post(url, body, {headers});
                console.log(response);
                if(response.data.check === 0){
                    alert("사용 가능한 아이디 입니다.")
                }
                else{
                    alert("이미 가입된 아이디 입니다.")
                }
            },
            async handleJoin(){
                // 유효성 검사
                if(this.userid.length === 0){
                    alert("아이디를 입력하세요.");
                }
                if(this.userpw.length === 0){
                    alert("비밀번호를 입력하세요.");
                }
                if(this.username.length === 0){
                    alert("이름을 입력하세요.");
                }
                const url = "/REST/member/join";
                const headers = {"Content-Type":"application/json"}
                const body = {
                    userid : this.userid,
                    userpw : this.userpw,
                    username : this.username
                }
                const response = await axios.post(url, body, {headers});
                console.log(response);
                if(response.data.check === 1){
                    alert("이미 가입된 아이디 입니다.")
                }
                else{
                    if(response.data.status === 200){
                    alert("회원 가입 되었습니다.");
                    this.$router.push({name:'Home'}); //성공 시 home으로 이동
                    }
                    else{
                        alert("회원 가입 실패했습니다.");
                    }
                }
            }
  • 중복 확인

1. 등록된 id 확인

 

등록된 id 확인

2. 중복 확인

중복 확인
중복 확인

3. 회원 가입 시 중복 확인

회원 가입 시 중복 확인

 

'프로젝트' 카테고리의 다른 글

32. 로그아웃  (0) 2022.01.10
31. 로그인  (0) 2022.01.10
29. 회원 가입  (0) 2022.01.10
28. vue 생성(spring 연동)  (0) 2022.01.10
27. 선수 조회(포지션)  (0) 2022.01.08