일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- db
- foreach
- gc
- Synchronized
- 백엔드
- iterable
- 가비지 컬렉션
- Atomic Type
- CAS
- 동시성
- java
- 가비지 컬렉터
- MySQL
- Locking Read
- text
- Lock
- Di
- iterator
- 자바
- jpa
- 데이터 타입
- 스프링
- Varchar
- MVCC
- reflection
- 동시성 문제
Archives
- Today
- Total
과정을 즐기자
[Spring Boot] 이메일로 사용자 인증하기 본문
해결하고 싶은 문제
회원가입, 비밀번호 찾기 등의 기능이 있을 때 '회원을 어떻게 인증할 것인가'하는 문제가 있었습니다.
이를 해결하기위한 방법으로 회원 이메일로 인증번호를 전송하면 회원이 받은 인증번호를 입력한 후
일치하는지 확인한 후 기능을 제공하는 방법으로 해결하려고 했습니다.
해결과정
스프링부트 3.0.5 버전을 사용했습니다.
build.gradle에 다음과 같은 설정정보를 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-mail'
application.yml에 다음과 같은 정보를 작성합니다. gmail을 사용했습니다.
spring:
mail:
host: smtp.gmail.com
port: 587
username: {구글 이메일 주소}
password: {발급받은 앱 비밀번호}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
앱 비밀번호는 구글 계정관리 - 보안 - 2단계 인증에서 발급받을 수 있습니다.
EmailController
@RequiredArgsConstructor
@RestController
public class EmailController {
private final EmailService emailService;
@PostMapping("/send-email")
public ResponseEntity<Void> sendEmail(@RequestParam("email") String toEmail) {
emailService.sendEmail(toEmail);
return ResponseEntity.ok().build();
}
}
EmailService
@RequiredArgsConstructor
@Service
public class EmailService {
private final JavaMailSender mailSender;
private final String subject = "회원을 인증해주세요";
public void sendEmail(String toEmail) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(toEmail);
message.setSubject(subject);
message.setText(makeUUID());
mailSender.send(message);
}
private String makeUUID() {
return UUID.randomUUID().toString().substring(0,8);
}
}
결과
다음과 같이 8자리 인증번호가 전송되었습니다.
이제 사용자가 인증번호를 입력하여 일치하는지 확인하여 회원가입, 비밀번호 찾기 등의 기능이 있을 때 '회원을 어떻게 인증할 것인가'하는 문제를 해결했습니다!
![image](https://user-images.githubusercontent.com/84896838/229406961-eebb535f-a7b5-4f3e-941e-864a982bdf33.png)
'Spring' 카테고리의 다른 글
스프링에서 파일(이미지, 동영상) 업로드/다운로드 (0) | 2023.05.28 |
---|---|
로컬 캐시를 적용하여 이메일로 전송하고자 하는 퀴즈 캐싱하기 (0) | 2023.05.03 |
서비스 추상화 (0) | 2023.04.11 |
예외 (0) | 2023.04.03 |
템플릿 (0) | 2023.04.02 |