์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์ 2๊ฐ์ง util class๊ฐ ํ์ํ๋ค.
- SHA256.java : ์ด๋ฉ์ผ ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ ํด๋์ค
- Gmail.java : Gmail SMTP๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ ์ ๋ณด๋ฅผ ๋ฃ๋ ํด๋์ค
util ํด๋์ค ์ค์
1) SHA256.java : ์ด๋ฉ์ผ์ ํด์ฌ๋ฅผ ์ ์ฉํ ๊ฐ์ ๋ฐํํ๋ ํด๋์ค
package util;
import java.security.MessageDigest;
public class SHA256 {
public static String getSHA256(String input) {
StringBuffer result = new StringBuffer();
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] salt = "Hello! This is Salt.".getBytes();
digest.reset();
digest.update(salt);
byte[] chars = digest.digest(input.getBytes("UTF-8"));
for(int i = 0; i < chars.length; i++) {
String hex = Integer.toHexString(0xff & chars[i]);
if(hex.length() == 1) result.append("0");
result.append(hex);
}
} catch(Exception e) {
e.printStackTrace();
}
return result.toString();
}
}
2) Gmail.java : Gmail SMTP๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ ์ ๋ณด๋ฅผ ๋ฃ๋ ํด๋์ค
- SMTP ๋ฉ์ผ ์ ์ก์ ์ํด ํ์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(2๊ฐ) ๋ค์ด๋ก๋
- Gmail ํด๋์ค ์ฝ๋ ์์ฑ
package util;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class Gmail extends Authenticator {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("google_ID", "password"); //๊ด๋ฆฌ์์ ์์ด๋์ ๋น๋ฐ๋ฒํธ
}
}
Google ์ก์ธ์ค ๊ด๋ฆฌ
ํด๋น ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ ํ
["๋ก๊ทธ์ธ ๋ฐ ๋ณด์" > "๊ณ์ ์ก์ธ์ค ๊ถํ์ ๊ฐ์ง ์ฑ " > ๋ณด์ ์์ค์ด ๋ฎ์ ์ฑ ํ์ฉ!]
ํ์๊ฐ์ , ์ด๋ฉ์ผ ์ธ์ฆ Action
userRegisterAction.jsp
ํ์๊ฐ์ ์ ์ฒ๋ฆฌํ๋ ํจ์
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDTO"%>
<%@ page import="user.UserDAO"%>
<%@ page import="util.SHA256"%>
<%@ page import="java.io.PrintWriter"%>
<%
request.setCharacterEncoding("UTF-8");
String userID = null;
if(session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if(userID != null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ด ๋ ์ํ์
๋๋ค.');");
script.println("location.href = 'index.jsp';");
script.println("</script>");
script.close();
return;
}
String userPassword = null;
String userEmail = null;
if(request.getParameter("userID") != null)
userID = request.getParameter("userID");
if(request.getParameter("userPassword") != null)
userPassword = request.getParameter("userPassword");
if(request.getParameter("userEmail") != null)
userEmail = request.getParameter("userEmail");
if(userID == null || userPassword == null || userEmail == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์
๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์์ต๋๋ค.');");
script.println("history.back();");
script.println("</script>");
script.close();
return;
}
//ํ์๊ฐ์
UserDAO userDAO = new UserDAO();
int result = userDAO.join(new UserDTO(userID, userPassword, userEmail, SHA256.getSHA256(userEmail), false));
if(result == -1) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์
๋๋ค.');");
script.println("history.back();");
script.println("</script>");
script.close();
return;
} else {
//๋ก๊ทธ์ธ
session.setAttribute("userID", userID);
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'emailSendAction.jsp'");
script.println("</script>");
script.close();
return;
}
%>
emailSendAction.jsp
์ด๋ฉ์ผ ์ธ์ฆ ์ ์ก ํจ์
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*, java.io.PrintWriter, javax.mail.internet.*, javax.mail.*"%>
<%@ page import="user.*, util.*"%>
<%
UserDAO userDAO = new UserDAO();
String userID = null;
if(session.getAttribute("userID") != null)
userID = (String) session.getAttribute("userID");
//๋ก๊ทธ์ธ์ด ๋์ง ์์ ์ํ
if(userID == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ ํด์ฃผ์ธ์.');");
script.println("location.href = 'userLogin.jsp'");
script.println("</script>");
script.close();
return;
}
boolean emailChecked = userDAO.getUserEmailChecked(userID);
if(emailChecked) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ด๋ฏธ ์ธ์ฆ ๋ ํ์์
๋๋ค.');");
script.println("location.href = 'index.jsp'");
script.println("</script>");
script.close();
return;
}
String host = "http://localhost:8080/TestWeb/";
//๋ณด๋ด๋ ์ฌ๋
String from = "๋ณธ์ธ์ google_ID";
//๋ฐ๋ ์ฌ๋
String to = userDAO.getUserEmail(userID);
//์ด๋ฉ์ผ ์ ๋ชฉ, ๋ด์ฉ
String subject = "๊ฐ์ํ๊ฐ๋ฅผ ์ํ ์ด๋ฉ์ผ ์ธ์ฆ ๋ฉ์ผ์
๋๋ค.";
String content = "๋ค์ ๋งํฌ์ ์ ์ํ์ฌ ์ด๋ฉ์ผ ์ธ์ฆ์ ์งํํ์ธ์." +
"<a href = '" + host + "emailCheckAction.jsp?code=" + new SHA256().getSHA256(to) + "'>์ด๋ฉ์ผ ์ธ์ฆํ๊ธฐ</a>";
Properties p = new Properties();
p.put("mail.smtp.user", from);
p.put("mail.smtp.host", "smtp.googlemail.com");
p.put("mail.smtp.port", "465"); //๊ตฌ๊ธ์ด ์ ํด์ค port
p.put("mail.smtp.starttls.enable", "true");
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.debug", "true");
p.put("mail.smtp.socketFactory.port", "465");
p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
p.put("mail.smtp.socketFactory.fallback", "false");
try {
Authenticator auth = new Gmail();
Session ses = Session.getInstance(p, auth);
ses.setDebug(true);
MimeMessage msg = new MimeMessage(ses);
msg.setSubject(subject);
Address fromAddr = new InternetAddress(from);
msg.setFrom(fromAddr);
Address toAddr = new InternetAddress(to);
msg.addRecipient(Message.RecipientType.TO, toAddr);
msg.setContent(content, "text/html;charset=UTF8");
Transport.send(msg);
} catch(Exception e) {
e.printStackTrace();
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.');");
script.println("history.back();");
script.println("</script>");
script.close();
return;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>๊ฐ์ํ๊ฐ ์น ์ฌ์ดํธ</title>
<!-- bootstrap CSS ์ถ๊ฐ -->
<link rel="stylesheet" href="./css/bootstrap.min.css">
<!-- custom CSS ์ถ๊ฐ -->
<link rel="stylesheet" href="./css/custom.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="index.jsp">๊ฐ์ํ๊ฐ ์น ์ฌ์ดํธ</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbar" class="collapse navbar-collapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="index.jsp">๋ฉ์ธ</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="dropdown" data-toggle="dropdown">
ํ์๊ด๋ฆฌ
</a>
<div class="dropdown-menu" aria-labelledby="dropdown">
<%
if(userID == null) {
%>
<a class="dropdown-item" href="userLogin.jsp">๋ก๊ทธ์ธ</a>
<a class="dropdown-item" href="userJoin.jsp">ํ์๊ฐ์
</a>
<%
} else {
%>
<a class="dropdown-item" href="userLogout.jsp">๋ก๊ทธ์์</a>
<%
}
%>
</div>
</li>
</ul>
<form action="./index.jsp" method="get" class="form-inline my-2 my-lg-0">
<input type="text" name="search" class="form-control mr-sm-2" type="search" placeholder="๋ด์ฉ์ ์
๋ ฅํ์ธ์." aria-label="Search"/>
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">๊ฒ์</button>
</form>
</div>
</nav>
<section class="container mt-3" style="max-width: 560px;">
<div class="alert alert-success mt-4" role="alert">
์ด๋ฉ์ผ ์ฃผ์ ์ธ์ฆ ๋ฉ์ผ์ด ์ ์ก๋์์ต๋๋ค. ํ์๊ฐ์
์ ์
๋ ฅํ๋ ์ด๋ฉ์ผ์ ๋ค์ด๊ฐ์
์ ์ธ์ฆํด์ฃผ์ธ์.
</div>
</section>
<footer class="bg-dark mt-4 p-5 text-center" style="color: #FFFFFF;">
Copyright © 2022 Jsh Rights Reserved.
</footer>
<!-- jQuery ์ถ๊ฐ -->
<script src="./js/jquery.min.js"></script>
<!-- pooper ์ถ๊ฐ -->
<script src="./js/popper.js"></script>
<!-- bootstrap.js ์ถ๊ฐ -->
<script src="./js/bootstrap.min.js"></script>
</body>
</html>
emailCheckAction.jsp
์ด๋ฉ์ผ ์ฒดํฌ ํจ์
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="user.*, util.*"%>
<%
request.setCharacterEncoding("UTF-8");
String code = null;
if(request.getParameter("code") != null)
code = request.getParameter("code");
UserDAO userDAO = new UserDAO();
String userID = null;
if(session.getAttribute("userID") != null)
userID = (String) session.getAttribute("userID");
if(userID == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ ํด์ฃผ์ธ์.');");
script.println("location.href = 'userLogin.jsp'");
script.println("</script>");
script.close();
return;
}
String userEmail = userDAO.getUserEmail(userID);
boolean isRight = (new SHA256().getSHA256(userEmail).equals(code)) ? true : false;
if(isRight) {
userDAO.setUserEmailChecked(userID);
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ธ์ฆ์ ์ฑ๊ณตํ์ต๋๋ค.');");
script.println("location.href = 'index.jsp'");
script.println("</script>");
script.close();
return;
} else {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ ํจํ์ง ์์ ์ฝ๋์
๋๋ค.');");
script.println("location.href = 'index.jsp'");
script.println("</script>");
script.close();
return;
}
%>
'๐ปWEB BackEnd > JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2022.11.07 |
---|---|
DB ์ค๊ณ & ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2022.11.07 |
๋ก๊ทธ์ธ, ํ์๊ฐ์ , ๋ก๊ทธ์์ ๊ตฌํ (0) | 2022.11.07 |
index.jsp ํ์ด์ง (0) | 2022.11.07 |
์น๋์์ธ ํ๋ ์์ํฌ - Bootstrap & jQuery (0) | 2022.11.07 |