반응형
728x90
반응형
구현
1) build.gradle 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-security:2.4.2'
2) CommonEncoder.java 생성
@Component
public class CommonEncoder implements PasswordEncoder {
private final PasswordEncoder passwordEncoder;
public CommonEncoder() {
this.passwordEncoder = new BCryptPasswordEncoder();
}
public CommonEncoder(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
@Override
public String encode(CharSequence rawPassword) {
return passwordEncoder.encode(rawPassword);
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return passwordEncoder.matches(rawPassword, encodedPassword);
}
}
적용
1) 회원 신규 등록의 경우 패스워드 암호화 실행하기
/**
* 회원 등록
* @param memberDto
* @return
*/
@PostMapping("")
public ResponseEntity<?> addMember(@ModelAttribute @Valid MemberDto memberDto) {
/* 패스워드 암호화 */
memberDto.setMemberPwd(passwordEncoding.encode(memberDto.getMemberPwd()));
Member member = memberService.addMember(memberDto);
...
}
아래 encode 함수를 사용하여 암호화하였다.
passwordEncoding.encode(memberDto.getMemberPwd()
2) 로그인의 경우 입력한 패스워드와 DB 조회 결과의 패스워드 일치여부 확인하기
@PostMapping("/login")
public ResponseEntity<?> login(@ModelAttribute LoginDto loginDto) {
/* ID, PWD 체크 */
Optional<Member> member = memberService.getMemberLoginCheck(loginDto);
if(member.isEmpty() || !passwordEncoding.matches(loginDto.getMemberPwd(), member.get().getMemberPwd())) {
throw new BadRequestException();
}
...
}
아래 matches 메소드로 일치여부를 확인하였다.
!passwordEncoding.matches(loginDto.getMemberPwd(), member.get().getMemberPwd())
반응형
'Coding > Spring' 카테고리의 다른 글
Spring 에서 Entity -> Dto 로 변환하는 ModelMapper 사용 (0) | 2021.06.07 |
---|---|
CommonException 으로 @Valid 어노테이션 BindingException, MethodArgumentNotValidException 처리하기 (0) | 2021.02.18 |
SpringBoot에서 Redis로 Session 구현하기 (0) | 2021.02.14 |
SpringBoot 2.4 + Oralce DB 연동하기 (2) | 2021.02.04 |
ResponseEntity에 대해 알아보기 (0) | 2020.11.06 |