출저 : https://kimvampa.tistory.com/133?category=771727
[Spring][쇼핑몰 프로젝트][9] 비밀번호 인코딩(BCryptPasswordEncoder 적용) - 2
프로젝트 Github : https://github.com/sjinjin7/Blog_Project 프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188 목표 회원가입 메서드 BCryptPasswordEncoder 클래스 적용 저번 포스팅에 이어..
kimvampa.tistory.com
OracleDB
<!-- 수정 후 -->
<select id="login" resultType="memberVO">
<![CDATA[
select * from member
where id = #{id}
]]>
</select>
<!-- 수정 전 -->
<select id="login" resultType="memberVO">
<![CDATA[
select * from member
where id = #{id} and pw = #{pw}
]]>
</select>
-pw는 controller에서 matchers()문을 통해 DB에 저장된 비밀번호와 제출된 비밀번호 일치 여부 확인하게 끔 하였다.
Controller
//login
@Override
@RequestMapping(value = "/login.do" , method = RequestMethod.POST)
public String login(@ModelAttribute MemberVO memberVO, RedirectAttributes rttr,
HttpServletRequest request, HttpServletResponse response)throws Exception{
HttpSession session = request.getSession();
String rawPw = "";
String encodePw = "";
MemberVO vo = memberService.login(memberVO);
if(vo != null) { //일치하는 아이디 존재시
rawPw = memberVO.getPw(); //사용자가 제출한 pw
encodePw = vo.getPw(); //db에 저장한 인코딩된 pw
if(true == pwEncoder.matches(rawPw, encodePw)) { //pw 일치여부 판단
vo.setPw(""); //인코딩 된 pw 지움
session.setAttribute("memberVO", vo); // session에 사용자의 정보 저장
return "redirect:/main/main.do";
}else {
rttr.addFlashAttribute("result",0);
return "redirect:/member/login.do";
}
}else { //일치하는 아이디가 존재하지 않을시
rttr.addFlashAttribute("result",0);
return "redirect:/member/login.do";
}
}
- String 타입의 rawPw , encodePw 변수 선언 및 초기화 하며, 제출받은 pw와 인코딩 된 pw를 잠시 저장하기 위한 용도로 사용할 것입니다.
-if(vo != null) 구현부는 pw가 일치하는지 확인해주는 코드 작성 해주면 되며,
rawPw 와 encodePw변수에 각 사용자가 제출한 pw, db에 저장된 인코딩 pw 저장해줍니다.
-matches(인코딩 전,후 pw)메서드가 true 를 반환하는지 안하는지 조건문 작성
-조건이 true인 경우 session에 뷰에 보낼 사용자 정보가 담긴 vo를 저장하는 코드 작성하기 전, vo에 저장된 사용자의 비밀번호 정보는 지워줍니다. 인코딩 되었더라도 굳이 노출시킬 필요는 없기 때문입니다.
※db에 pw 값이 인코딩이 안되어있는 아이디로 로그인을 하려하면 되지않습니다..!
'Spring > Study' 카테고리의 다른 글
[Spring]Ajax를 이용한 좋아요 기능 구현 (0) | 2022.09.25 |
---|---|
[Spring]Ajax를 이용한 댓글(답글) 구현 (0) | 2022.09.25 |
[Spring]비밀번호 인코딩(BCryptPasswordEncoder 적용)-회원가입 부분 (0) | 2022.05.21 |
[Spring]로그인 & 로그아웃 구현(2) (0) | 2022.05.21 |
[Spring]이메일 인증번호 전송 & 유효성검사 (0) | 2022.05.21 |