2022.02.23.Wed.
✍ 복습
Filter, Interceptor, AOP

ANT 표기법


가입 확인

MemberService.java
package com.example.demo.service;
import java.time.*;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.commons.lang3.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.mail.javamail.*;
import org.springframework.security.crypto.password.*;
import org.springframework.stereotype.*;
import org.springframework.stereotype.Service;
import com.example.demo.dao.*;
import com.example.demo.entity.*;
@Service
public class MemberService {
@Autowired
private MemberDao dao;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private JavaMailSender javaMailSender;
private void sendMail(String from, String to, String subject, String text) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message, false, "utf-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
public boolean idCheck(String username) {
return !dao.existsById(username);
}
public void join(Member member) {
String checkcode = RandomStringUtils.randomAlphanumeric(20);
String encodedPassword = passwordEncoder.encode(member.getPassword());
member.setJoinday(LocalDate.now()).setAuthority("ROLE_USER").setCheckcode(checkcode)
.setEnabled(false).setLevels(Level.BRONZE).setPassword(encodedPassword).setCount(0);
dao.save(member);
String text = new StringBuilder("<h1>가입확인 코드</h1>")
.append("<p>가입을 마무리하려면 아래 코드를 화면에 입력하세요</p>")
.append(checkcode).toString();
sendMail("admin@icia.com", member.getEmail(), "가입확인 메일", text);
}
public Boolean checkcode(String checkcode) {
Member member = dao.findByCheckcode(checkcode);
if(member==null)
return false;
return dao.update(Member.builder().username(member.getUsername()).checkcode("0").enabled(true).build())==1;
}
아이디 찾기

find_id.html

MemberController.java

MemberService.java
public String findId(String email) {
Member member = dao.findByEmail(email);
if(member==null)
return null;
return member.getUsername();
비밀번호 찾기

reset_password.html

MemberService.java
public Boolean resetPassword(String username, String email) {
Member member = dao.findById(username);
if(member==null)
return false;
if(member.getEmail().equals(email)==false)
return false;
String newPassword = RandomStringUtils.randomAlphanumeric(20);
String newEncodedPassword = passwordEncoder.encode(newPassword);
dao.update(Member.builder().username(username).password(newEncodedPassword).build());
String text = new StringBuilder("<h1>임시비밀 번호</h1>")
.append("<p>아래 임시 비밀번호로 로그인하세요. 로그인 후 비밀번호를 변경해 주세요</p>")
.append(newPassword).toString();
sendMail("admin@icia.com", member.getEmail(), "임시비밀번호 안내", text);
return true;
}
MemberController.java

비밀번호 변경

change_password.html

MemberService.java

MemberController.java
