-- 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();
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 9월' 카테고리의 다른 글
22.09.29 ~ 09.30 - [ Final 프로젝트 ] DB 모델링 (0) | 2022.10.06 |
---|---|
22.09.28 - [ Spring ] 썸네일 + 이론 조금 [ docker, VM, OS ] (0) | 2022.10.06 |
22.09.26 - [ CSS ] Grid (0) | 2022.10.02 |
22.09.23 - [ Spring ] 파일 다운로드 (0) | 2022.10.02 |
22.09.22 - [ Spring ] 파일 업로드 (1) | 2022.09.30 |