54. PC를 이용한 로그인, 로그아웃

박선규's avatar
Mar 18, 2024
54. PC를 이용한 로그인, 로그아웃

View 확인

notion image
클라이언트로부터 username 과 password 를 받기 위해 DTO를 만든다.
@Data public static class LoginDTO{ private String username; private String password; }

레파지토리

@RequiredArgsConstructor @Repository public class UserRepository { private final EntityManager em; public User findByUsernameAndPassword(UserRequest.LoginDTO requestDTO) { String q = """ select u from User u where u.username = :username and u.password =:password """; Query query = em.createQuery(q, User.class); query.setParameter("username",requestDTO.getUsername()); query.setParameter("password",requestDTO.getPassword()); return (User) query.getSingleResult(); } }

컨트롤러

//로그인 @PostMapping("/login") public String login(UserRequest.LoginDTO requestDTO){ User sessionUser = userRepository.findByUsernameAndPassword(requestDTO); session.setAttribute("sessionUser",sessionUser); return "redirect:/"; } //로그아웃 @GetMapping("/logout") public String logout() { session.invalidate(); return "redirect:/"; }

View 확인

<ul class="navbar-nav"> {{#sessionUser}} <li class="nav-item"> <a class="nav-link" href="/board/save-form">글쓰기</a> </li> <li class="nav-item"> <a class="nav-link" href="/user/update-form">회원정보보기</a> </li> <li class="nav-item"> <a class="nav-link" href="/logout">로그아웃</a> </li> {{/sessionUser}} {{^sessionUser}} <li class="nav-item"> <a class="nav-link" href="/join-form">회원가입</a> </li> <li class="nav-item"> <a class="nav-link" href="/login-form">로그인</a> </li> {{/sessionUser}}
📌
sessionUser 값이 있다면 로그인 상태로, 로그인 상태와 비로그인 상태일 때 네비게이션 바에 표시될 버튼을 구분한다.
Share article

p4rksk