[Spring Boot 게시판] 30일차

김정현·2022년 11월 7일
0

SPRINGBOOT게시판

목록 보기
30/36

1. 회원정보 수정 전 비밀번호 체크 시 인증코드 생성

	@RequestMapping("/usr/member/doCheckPassword")
	@ResponseBody
	public String doCheckPassword(String loginPw, String replaceUri) {		
		if(Ut.empty(loginPw)) {
			return rq.jsHistoryBack("비밀번호를 입력하세요.");			
		}

		if(rq.getLoginedMember().getLoginPw().equals(loginPw)==false) {
			return rq.jsHistoryBack("비밀번호가 일치하지 않습니다.");	
		}
		
		if(replaceUri.equals("../member/modify")) {
			String memberModifyAuthKey = memberService.genMemberModifyAuthKey(rq.getLoginedMemberId());
			
			replaceUri += "?memberModifyAuthKey=" + memberModifyAuthKey;
		}
		
		return rq.jsReplace("비밀번호 확인", replaceUri);
	}
  • 회원정보 수정 전 패스워드 체크 절차를 통과하면 ../member/modify 로 이동
  • 이동 할때 쿼리스트링에 인증코드를 생성하여 추가

2. 회원 정보 수정시, 인증 코드 체크

1) 인증 코드 체크

        @RequestMapping("/usr/member/modify")
            public String showModify(String memberModifyAuthKey) {
                if(Ut.empty(memberModifyAuthKey)) {
                    return rq.jsHistoryBackOnView("인증코드가 없거나 만료 되었습니다.");
                }
                ResultData checkMemberModifyAuthKeyRd = memberService.checkMemberModifyAuthKey(rq.getLoginedMemberId(),memberModifyAuthKey);

                if(checkMemberModifyAuthKeyRd.isFail()) {
                    return rq.jsHistoryBackOnView(checkMemberModifyAuthKeyRd.getMsg());
                }
                return "usr/member/modify";
            }
  • uri로 접근시 인증코드가 없거나, 인증코드가 틀릴 경우 회원 정보수정 페이지로 이동하는것을 막는다.
  • memberService.checkMemberModifyAuthKey(rq.getLoginedMemberId(),memberModifyAuthKey) : 인증 코드 확인하는 메서드로
  • 로그인된 회원의 번호와 회원정보 수정전 비밀번호 체크 통과시 생성되는 인증코드를 바탕으로 체크
  • 회원정보 수정 페이지를 보여주는 ../member/modify와 DB에 수정 정보를 업데이트하는 ../member/doModify에 인증코드 체크를 추가
  • 정상 적인 루트로 수정 페이지 전 비밀번호 체크 후 이동 하면 문제가 없지만, uri로 비밀번호 체크를 하지않고 접근시 인증코드가 생성되지 않아
  • memberModifyAuthKey를 임의로 작성하여도 DB에 memberModifyAuthKey의 value값이 존재하지 않아 접근 불가

2) 인증 코드 확인

    public ResultData checkMemberModifyAuthKey(int actorId, String memberModifyAuthKey) {
            String saved = attrService.getValue("member", actorId, "extra", "memberModifyAuthKey");

            if (!saved.equals(memberModifyAuthKey)) {
                return ResultData.from("F-1", "일치하지 않거나 만료되었습니다");
            }
            return ResultData.from("S-1", "정상 코드입니다");
        }
  • memberSevice에서 인증코드를 체크하는 메소드
  • attrService.getValue() 메소드를 통해 DB에 저장되 있는 인증코드를 가져오고 DB의 인증코드와 쿼리스트링의 인증코드가 일치하는지 체크

0개의 댓글