수업 정리 bbs-basic/#5 이메일인증DB연결, 회원가입,이메일,로그인 결과값 DB연결 (SystemService)

최동민·2022년 6월 16일
0

Spring 수업정리

목록 보기
24/47

UserController 에서 getVerifyEmail 생성.

enums에 UserEmailVerifyResult 생성

vos에 UserEmailVerifyVo 생성
상속하고 인터페이스를 구현. ( 멤버변수 만들고 구현할 것 )

UserController 에서
UserEmailVerifyVo 불러오고, "c"와 "s"를 @RequestParam으로 연결


emailVerificationTemplate.html 의 c와 s

UserService verifyEmail 메서드 추가

IUserMapper

xml에서 SELECT문 추가
code와 salt의 SELECT

UserController 에서 추가

        userEmailVerifyVo.setIndex(0);

IUserMapper 에서 select 메서드를 selectUserByEmailAndPassword로 변경.

xml의 select도 이름을 변경해준다.

IUserMapper 에서 길었던 매개변수 이름을 지우고
@Param 어노테이션을 이용해 변경

xml 에서 parameterType 을 지워준다. @param의 이름이 #{이름} 과 같음.

IUserMapper 에서 생성 후

xml 에서도 추가

UserService 에서 userMapper 안에 이 내용으로 변경

userEmailVerifyVo.getCode(),
userEmailVerifyVo.getSalt()

맨 아래에 내용 추가

상수 3개 잘라내서

맨 위로 쉬프트 F6으로 이름 대문자 변경

맨 아래 내용 추가.

IUserMapper 에서 두개 추가

xml에서 update updateUser추가

xml에서 update updateUserEmailVerificationCode 추가

UserService 에서

컨트롤러에서

verifyEmail.html 생성

회원가입 후 로그인 => 이메일 인증 시


해당 회원의 email_verified_flag 가 1이 된다.


expired_flag 도 1이 된다.

다시 이메일 인증 시 만료 | 이미 사용되었다 하고 뜬다.

c와 s 난수화가 무지막지하군..

http://127.0.0.1:8080/user/verify-email?c=de0d528abe56bccf07b10af3ce79fa09636617c0c6e8ba160e8fbd37387317e3a8285bbb03d72f475c5d79a22c99b366f4f1eb22836828529df3d2de46a8dc12&s=63b8f86d357e8f6ac7abf6e50fec4eb1218e7201ea2802a32b73be6fecd8b883c4bec8f1d683bcebcff3474e019db1d83d86cfcec465f8cc20b15b065ac75cfa60568bdca6a8c3942bbd52b197ecc896f8b4f8f0f7c9d628d98054e84feb6e7feaf11e9bb8d943dac0b7f21ab1b1943002c36745357b74a6eaa774b4960037e5

지금까지 결과값을 남긴 것은 회원가입, 이메일 인증, 로그인 이렇게 3개이다.
FAILURE, SUCCESS 등.
이 결과값을 DB로 넘겨보려 한다.

console 에서 테이블 두개 추가
system_activity_legs
system_exception_logs

client_ua 는 user agent의 줄임말
result :누가 어떤 브라우저로 어떤 주소를 요청했는데 어떤 결과가 나왔다 라는 뜻
오류가 터졌을 때 밑에 쭉 뜨는 게 stacktrace

SystemService

StandardController

UserController가 상속
public class UserController extends StandardController

UserController메서드에 SystemService 추가 후
super(systemService)

SystemActivityLogEntity 에서 만든 DB의 필드 작성. 게터세터까지.

SystemService 에서
각 Vo들은 IResult 인터페이스의 메서드를 오버라이드하였고 (그 메서드의 타입은 각각의 enum), 각 Entity의 조건과 결과를 담은 result로 재정의하겠다.

ISystemMapper

SystemMapper.xml생성

UserController의 postLogin

HttpServletRequest request와
this.systemService.putActivityLog(request, userLoginVo);
생성

2번쨰 파라미터 자리에는 IResult타입넣어야 함. 각 Vo는 IResult를 구현.

postRegister 도 마찬가지
this.systemService.putActivityLog(request, userRegisterVo);

getVerifyEmail 도 마찬가지
this.systemService.putActivityLog(request, userEmailVerifyVo);

회원가입 진행

회원가입 성공, 이메일 인증 발송 성공, 인증하기 성공, 로그인 성공

profile
코드를 두드리면 문이 열린다

0개의 댓글