회원가입과 로그인 로직을 간단하게 수정했다.
원래 Repository 부분을 JpaRepository를 상속 받아 사용하지 않고 아래와 같이 별도의 클래스를 만들어 Spring Bean을 등록하고 EntityManage 의존성을 주입받아 사용했다.
public List<UserEntity> findById(String userId) {
return em.createQuery("select m from UserEntity m where m.userId = :userId", UserEntity.class)
.setParameter("userId", userId)
.getResultList();
}
public List<UserEntity> findByEmail(String userEmail) {
return em.createQuery("select m from UserEntity m where m.userEmail = :userEmail", UserEntity.class)
.setParameter("userEmail", userEmail)
.getResultList();
}
코드로 보면 위와 같다. 위에 두 로직은 회원가입을 하기 전에 이메일과 아이디의 중복 체크를 해 보는 로직이다.
boolean existsByUserEmail(String userEmail);
boolean existsByUserId(String userId);
위에 긴 로직을 JpaRepository를 상속받아 따로 메소드를 작성해서 간단하게 사용했다. 사실, 위 처럼 복잡하게 사용한 이유는 따로 커스텀해서 사용하려고 했는데 내가 만들고자 하는 프로젝트는 그렇게 복잡하지도 않고 간단하게 코드를 줄여서 작성하는 게 더 나을 것 같아서 아래처럼 줄여주었다.
리턴 타입은 boolean으로 해주고 아래와 같이 오류가 나면 Exception을 터트려줬고 Controller에서 try, catch로 잡아 msg, url 처리로 alert로 처리해 주기로 했다.
---
로그인 부분은 아직 JpaRepository를 상속받아 구현하지는 않고 스프링 빈에 등록한 클래스에서 처리하고 있지만 세션 부분을 다시 수정해주었다.
boolean res = userService.login(userDTO);
if (res == true) {
UserEntity dto = userService.loginSession(userDTO);
session = request.getSession();
session.setAttribute(SessionConst.LOGIN_MEMBER, dto);
위에서 로그인 로직을 거쳐와서 true일 경우 세션에 값을 담는데 그 전에 loginSession로직을 다시 실행시킨다.
List<UserEntity> userDTOList = iUserRepository.findAll();
UserEntity userEntity = userDTOList.get(0);
코드 내용은 위와 같다. JpaRepository에서 제공하는 findAll() 메소드를 통해 전부 불러왔고 이 것을 그대로 세션에 넣어줬다. 원래 전에는 아이디랑 비밀번호만 넣어줬는데 생각해 보니까 전부 다 값을 넣어주는 게 좋을 것 같아서 이렇게 수정하게 되었다.
비밀번호와 이메일에는 암호화를 걸어서 넣어주었는데 이메일은 복호화해서 가져와야 하는지 애초에 암호화를 안 걸지 고민하고 있다.
'Project > 소경관' 카테고리의 다른 글
[소경관] : JPA 회원 탈퇴 구현하기 및 회원 탈퇴 Session 처리하기 (0) | 2022.06.04 |
---|---|
[소경관] : thymeleaf input에 Session값 가져오기와 input에 Session값을 입력 받아 Controller에 넘기기 (0) | 2022.06.03 |
[소경관] : 등록한 차량 초기화 (0) | 2022.05.31 |
[소경관] : ocr 기능 완성과 몇 가지 문제 체크 (0) | 2022.05.30 |
[소경관] : 이미지 인식 처리하기 (0) | 2022.05.28 |
댓글