Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/9월

22.09.27 - [ Spring ] 회원가입(파일첨부), 로그인, 암호화, 이미지 보여주기, 로그아웃

giggs 2022. 10. 5. 16:04

 

 

 

-- INDEX --

 

1. 회원가입 2. 로그인 3. 암호화 4. 이미지 보여주기 5. 로그아웃
이미지 파일첨부 id로 멤버 가져오기 Spring Security Core
BCryptPasswordEncoder
비회원 - 게스트 이미지 세션
.invalidate()
파일업로드메서드
만들어서 사용
가져온 멤버 pwd와
입력받은 pwd 비교
vo에
암호화 메서드 생성
회원 - 프로필 이미지  

 

 

 

 


 

 

 

 

 

1. 회원가입 ( 프로필 이미지 파일 첨부 )

 

 

 

1-1 : db모델링 및 테이블 만들기 

 

 

 

 


 

1-2 : C – S – D ::  vo  만들기

  • 서비스는 인터페이스와 + 구현체 클래스

 

 

 

# Service 체크포인트

  • 서비스 레이어에서 sst는 변경될 일 없어서 final 키워드와 생성자 인젝션으로 만들어줌

 

 


 

# Service 체크포인트

  • 같은 이유로 dao도 해줌

 

 


 

# Dao 체크포인트

  • dao 인터페이스의 메서드 명!
  • 유지관리 차원에서 메서드명 앞쪽에 insert / select 이런 작업명 써주는 것이 좋다.
  • 회원가입이라고 join이라는 메서드보다는 insertOne 이런 식으로 하는 작업의 내용에 맞춰 명명하는 것이 좋다.

 

 

 

 


 

# Xml 파일 체크포인트

  • 매퍼 파일, 설정파일 만들고 연결하기
  • 설정파일 내용 체크 - NULL 값 처리에 대한 설정 필요
  • 매퍼파일 경로 체크 : mybatis하위에 어떤 경로가 올지 어떤-mapper파일이 올지 모르니 * 사용해서 처리

 

 

 


 

 

1-3 : 파일 첨부해서 회원 가입하기

 

 

# 파일 업로드 작업 체크

  • 멀티파트 타입 파일과 savePath 받아서
  • 파일 업로드 후
  • 체인지 네임 뱉는다.

 

 

 


 

 

1. 클래스 새로 만들어서 메서드 구현하기

  • [ 확장자 얻고, 서버와디비에 저장할 이름 만들고, 그 이름으로 서버에 저장하고, 그 이름 리턴하는 함수 ]

 

 


 

 

2. 멤버 컨트롤러에서 메서드 호출해서 사용

  • savePath를 지정해서 메서드 파라미터 전달
  • 메서드 실행결과 디비에 저장될 이름 리턴 받아서
  • 그 이름으로 vo객체에 세팅 - 이 이름으로 db에 저장

 

 

 

 

 

# 리얼 패스 부분 팁

  • 스태틱 변수로 만들어 주고 사용하자.
  • 오타도 안 날 테고, 저장될 곳 변경되면 다른 곳 수정 없이 변수 값만 변경해주면 된다!

 

 

 


 

 

1-4 : 파일 업로드 작업은 파일이 있을 경우에만 진행되도록 해주기

  • = 파일을 첨부안 해도 오류 발생하지 않도록 해주기

 

 

 

 

 


 

 

 

 

2. 로그인 

  • C-S-D:dao 작업

 

 

#로그인 작업 흐름

  • 서비스 레이어에서 id를 통해서 한 명의 멤버를 가져오고
  • 가져온 멤버의 pwd와 사용자가 입력한 pwd 맞는지 비교

 

 

 

( 암호화 작업 대비해서 이렇게 만듦 )

( 암호화하고 난 후에는 equals() 부분은 mathces()로 변경할 예정)

 

 

 

 


 

 

 

3. 암호화

 

 

 

3-0 : 라이브러리 확인, 빈등록 확인

  • pom.xml에 <dependency> 라이브러리 등록확인 – Spring Security Core
  • root-context에 <bean> 빈등록 확인 - BCryptPasswordEncoder

 


 

 

3-1 : 생성자 인젝션으로 PasswordEncoder 만들어주기

  • 암호화하는 PasswordEncoder는 멤버 서비스에서 다 필요하고, 변경 불필요하니까
  • final로 해주고 생성자로 넣어주자.

 

 

 

 

 


 

 

3-2 : 회원가입 시 암호화 작업해주기.

 

 

 


 

 

3-3 : 암호화 작업 - 메서드로 만들어주기

  • 암호화하는 작업은 많이 사용할 것 같으니
  • MemberVo에 메서드로 빼놓자.

 

 

#MemberVo에 메서드 작성하는 이유?

  • 사용자가 입력한 비밀번호를 가지고
  • 암호화한 비밀번호로 MemberVo의 pwd값을 세팅하는 것이므로
  • MemberVo에 메서드 생성 
  • pwd= pwd로 vo 필드 값 세팅 가능

 

 

 


 

 

 

3-4 : 암호화되어서 회원가입되는지 테스트

  • 같은 비밀번호를 입력하여도 다르게 암호화되는 것 확인

 

 

 

 

 

비밀번호 1234로 가입 암호화된 것 확인!

 

 

비밀번호 1234 로 2개 가입했는데

같은 값을 입력하더라도

다른 값으로 나오는 것까지 확인

 

 

 


 

 

3-4 : 암호화되어서 로그인되는지 테스트

  • 패스워드 인코더 객체 pwdEnc의 메서드 matches() 활용
  • pwdEnc.matches() 로 체크 

 

 

 

 

 

 


 

 

 

 

4. 프로필 이미지 보여주기

 

 

 

4-1 : 게스트일 때는 게스트 이미지 / 로그인하면 해당 멤버 프로필 보여주기

 

 

 


 

 

4-2 : <setting> mapUnderscoreToCamelCase 되어있나 확인

  • 세팅 안되어있으면 db의 칼럼과 서버의 필드 명이 매칭 안되어서 값 못 가져온다.
  • 세팅 추가해주기 

 

 

 

 

 


 

 

 

5. 로그아웃

  • 로그아웃 처리하기 - 세션에서 만료시키기
  • 세션.invalidate();