Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 수익화
- 간단한 요리
- java
- 1인 개발자
- 자동화 수익
- node js
- 호주
- 수익 자동화
- mcp 서버
- 프론트엔드
- 간편한요리
- MCP
- 포트포워딩
- Tailwind Css
- 리엑트
- 1인개발자
- 자바
- spring 세팅
- SPRING 회원 관리 기능
- 개발자
- Flutter
- Spring
- 웹개발자
- Next.js
- 개발자 수익화
- 1인 개발
- 리엑트 라우터
- 일러스트
- 호주워킹홀리데이
- Firebase
Archives
- Today
- Total
IT 세상에서 살아남기
SPRING(8) 비밀번호 암호화 본문
반응형
1. 비밀번호 암호화는 데이터베이스에 비밀번호를 저장할 때 암호화하는 과정이며 회원가입이나 비밀글을 쓸 때 사용할 수 있습니다.
먼저, 메이븐레파지토리에서 비밀번호 암호화를 위한 디펜던시를 추가해줍니다
https://mvnrepository.com/ 메이븐레파지토리는 이 주소입니다.
<!--/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
이 디펜던시를 복사한 후에 porm.xml에 추가해줍니다.
디펜던시를 추가했다면 service영역에서 암호화를 위한 객체를 만들어 줍니다.
BCryptPasswordEncoder encoder; 이 객체가 암호화를 위한 객체 입니다.
@Service
public class MemberServiceImpl implements MemberService{
@Autowired MemberMapper mapper;
BCryptPasswordEncoder encoder; //객체는 BCryptPasswordEncoder로 만들어줍니다.
public MemberServiceImpl() {
encoder = new BCryptPasswordEncoder(); //생성자안에서 객체를 생성합니다.
}
예시에서 사용한 부분은 회원가입을 할 때 패스워드를 암호화하기 위한 코드입니다.
@Override
public int register(MemberDTO dto) {
System.out.println("변경 전 : " + dto.getPw());
String securePw = encoder.encode(dto.getPw());
System.out.println("변경 후 : " + securePw);
// 위에는 디버깅
dto.setPw(securePw); //dto에 암호화된 비밀번호로 저장시키겠다라는 의미
int result = 0;
try {
result = mapper.register(dto);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
저장 된 dto의 pw를 가져오고 나서 그 결과를 encoder에 값을 넣어 암호화 시킨 후 그 암호화 시킨 암호를 다시 dto에 저장시켜 데이터 베이스에 암호화된 비밀번호를 저장시킬 수 있습니다.
다만, 이렇게만 하면 데이터베이스에는 저장이 되었지만 로그인은 할 수 없는데 userCheck에서 변경 후 사용이 가능합니다.
로그인을 할때 바뀐 암호화된 패스워드를 인증히기 위한 작업을 해줍니다.
@Override
public int userCheck(String id, String pw) {
MemberDTO dto = mapper.getMember(id);
if(dto != null) {
//if(pw.equals(dto.getPw())) { //암호화 되기전에 사용하던 코드
if(encoder.matches(pw, dto.getPw())) { //암호화가 되면 이렇게 사용
return 0;
}
}
return 1;
//1일때 아이디 없음 0일때 아이디 있음
}
encoder.matchs로 입력받은 정보와 데이터베이스의 암호화가 되어있는 정보를 비교 후 로그인이 승인되는 코드입니다.
반응형
'spring' 카테고리의 다른 글
SPRING(10) 만약 다음 주소 API를 쓰는데 데이터베이스가 하나라면? (0) | 2022.01.24 |
---|---|
SPRING(9) 다음 주소 API (0) | 2022.01.24 |
SPRING(7) GET방식과 POST방식 (0) | 2022.01.23 |
SPRING(5) 데이터베이스 연동하기(오라클 oracle) (0) | 2022.01.23 |
SPRING(4) 프로잭트 만들기 (0) | 2022.01.23 |