티스토리 뷰
지난 글에서 이어집니다
https://rla5378.tistory.com/49
[스프링]이메일 보내기 (1)
1.pom.xml추가하기 org.springframework spring-context-support ${org.springframework-version} javax.mail javax.mail-api 1.5.4 com.sun.mail javax.mail 1.5.3 2. 이메일 보낼 계정 [Google계정관리] > 좌측..
rla5378.tistory.com
1.컨트롤러
MailController.java
@Controller
public class MailController {
@Autowired
MailService ms;
@GetMapping("auth_form")
public String autoForm() {
return "auth";
}
@GetMapping("auth")
public String auth(HttpServletRequest request) {
ms.auth(request);
return "redirect:https://www.google.co.kr/";
}
@GetMapping("auth_check")
public String authCheck(@RequestParam String userid,@RequestParam String userkey,
HttpSession session) {
String sessionKey = (String) session.getAttribute(userid);
if(sessionKey != null) {
if(sessionKey.equals(userkey)) {
session.setAttribute("userid", userid);
}
}
return"redirect:auth_form";
}
}
인증보내기가 끝나면 구글주소로 향하게 되어있다.
2.서비스
MailService.java
@Service
public class MailService {
@Autowired
JavaMailSender mailsender;
//로그인 인증
public void auth(HttpServletRequest request) {
HttpSession session = request.getSession();
String userid = "abc";
String userkey = rand();
session.setAttribute(userid, userkey);
//서버에서 세션을 만들어 대기중
//abc라는 세션 명에 userkey가 들어있는 상황
String body = "<h2>안녕하세요 ㅇㅇㅇ입니다</h2><hr>" + "<h3>" + userid
+ " 님</h3>" + "<p>인증하기 버튼을 누르면 로그인 됩니다</p>"
+ "<a href='http://localhost:8081(자기톰켓포트번호)" + request.getContextPath()
+ "/auth_check?userid=" + userid
+ "&userkey=" + userkey + "'>인증하기</a>";
sendMail("/*받는사람 이메일*/", "이메일 인증입니다", body);
}
//인증번호
private String rand() {
Random ran = new Random();
String str = "";
int num;
while (str.length() != 20) {
num = ran.nextInt(75) + 48;
if ((num >= 48 && num <= 57) || (num >= 65 && num <= 90) || (num >= 97 && num <= 122)) {
str += (char) num;
} else {
continue;
}
}
return str;
}
}
인증번호는 숫자,대소문자를 섞은 20문자이다.
session에 userid,userkey를 넣은건 후에 이메일로 넘어온 번호와 서버측에서 갖고있던 정보들이 맞는지 확인하기 위해서다.
>컨트롤러에 auth_check()
@GetMapping("auth_check")
public String authCheck(@RequestParam String userid,@RequestParam String userkey,
HttpSession session) {
String sessionKey = (String) session.getAttribute(userid);
if(sessionKey != null) {
if(sessionKey.equals(userkey)) {
session.setAttribute("userid", userid);
}
}
return"redirect:auth_form";
}
인증하기로 보내진 값과 서버에 있는 값을 비교해보고 다시 auth_form으로 보낸다.
'Spring' 카테고리의 다른 글
[스프링]ajax 이용해보기 (0) | 2021.11.17 |
---|---|
[스프링]이메일 보내기 (1) (0) | 2021.11.16 |
[스프링]업로드한 파일 띄우기,다운로드 기능 (0) | 2021.11.15 |
[스프링]파일 업로드 (0) | 2021.11.15 |
스프링_@RequestParam 간단하게 사용해보기 (0) | 2021.05.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- getParameter
- 합격
- Expression
- application
- scriptlet
- span
- Margin
- Redirect
- div
- forward
- jsp
- 정처기
- this.
- session
- NAV
- CLASS
- pageContext
- request
- dl
- padding
- 자격증
- 정처산기
- link href
- 실기
- 독학
- RequestDispatcher
- id
- 정보산업처리기사
- Declaration
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함