🚗 Backend Toy Project/스프링 부트 게시판

    [스프링부트 게시판] 26. 커스텀 Validation을 통한 중복 검사 구현

    Validation 어노테이션으로는 단일 필드에 대한 유효성 검증만 처리가 가능하기 때문에, 중복체크 같은 경우는 해결이 불가능했습니다. 따라서 커스텀 Validation을 따로 만들어 중복 검사를 구현해보았습니다. 중복되는 코드가 조금 생기긴 하였지만 결과는 나름 만족스럽게 나온 것 같습니다. 📝 1. UserRepository 우선 아래와 같이 해당 데이터가 DB에 존재하는지 여부를 확인하기 위한 Named Query를 작성해주었습니다. Spring Data Jpa에서는 이를 exists를 통해 사용할 수 있습니다. 반환 타입은 boolean 형으로, 해당 데이터가 존재할 경우 true, 존재하지 않을 경우 false를 리턴합니다. package com.cos.blog.repository; // @R..

    [스프링부트 게시판] 25. 회원가입시 validation 체크

    회원가입시에 아이디, 비밀번호, 이메일의 형식을 따로 정해두고 해당 형식에 맞지 않으면 회원가입을 할 수 없도록 유효성 검사를 구현해주었습니다. 인터넷에 나와 있는 자료를 바탕으로 여러가지 방법을 시도해보았으나 잘 작동하지 않는 경우가 대부분이었는데, 이틀정도 구르다보니 어찌저찌 그럴듯 하게 동작하도록 구현은 된 것 같습니다. 유효성 검사를 위한 구현 과정은 다음과 같습니다. 📝 1. UserRequestDto 우선 기존에 ajax에서 엔티티를 통해 데이터를 받아오던 방식에서 따로 DTO를 만들어 데이터를 받아오는 방식으로 수정하였습니다. 이유는 여러가지가 있는데, 가장 큰 이유는 애초에 엔티티로 유효성 검사를 수행하려 할 경우 오류가 발생하였습니다. 오류가 발생한 정확한 이유는 모르겠으나 위처럼 수정하..

    [스프링부트 게시판] 24. Remember Me 기능 구현

    강의 영상에선 다루지 않았지만 로그인 시 Remember Me 기능을 구현해보고 싶어 관련 내용을 찾아보았습니다. 스프링 시큐리티에서 이와 관련하여 이미 다 내장하여 제공하고 있는 메서드들이 있어 생각보다 손쉽게 구현할 수 있었습니다. 📝 1. SecurityConfig 클래스 수정 @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf().disable() .rememberMe() .rememberMeParameter("remember") .tokenValiditySeconds(3600) .alwaysRemember(false) .userDetailsService(principalDetail..

    [스프링부트 게시판] 23. 로그인 실패 예외 처리

    로그인 시스템을 구현했지만 사용자가 로그인을 성공했을 경우만 구현하였고, 실패했을 경우는 따로 구현하지 않아 사용자가 로그인을 실패해도 별다른 메시지도 없이 페이지가 리로드 되기만 하여 이 부분을 개선해주었습니다. 📝 1. SimpleUrlAuthenticationFailureHandler 클래스를 상속받는 커스텀 핸들러 구현 로그인 실패와 관련된 예외는 HttpSecurity의 failureHandler()를 추가해주어야 캐치할 수 있다. 해당 메서드는 AuthenticationFailureHandler 인터페이스 구현체를 파라미터로 받는다. 따라서 AuthenticationFailureHandler 인터페이스를 구현하는 클래스를 생성해야 하는데 여기서는 SimpleUrlAuthenticationFai..