Back-end

·Back-end
이전에 Java에서 equals()와 hashCode() 메서드를 재정의 해야 하는 이유에 대해 알아보았다. [Java] 객체비교 시 equals()와 hashcode() 둘 다 재정의해야 하는 이유🌲 equals와 hashCode란?equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다.따라서 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. 🌱 equalschaewsscode.tistory.com 그렇다면 JPA Entity에서는 equals()와 hashCode()를 어떻게 재정의 해야 할까? 🌲 JPA Entity에서는 뭐가 달라?JPA의 영속성 컨텍스트는 데이터베이스에서 가져온 Entity..
java.lang.NullPointerException: Cannot invoke "org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder.getObject()" because "this.authenticationManagerBuilder" is null🌱 문제 상황기존에 구현했던 로직은 AuthenticationManagerBuilder를 통해 인증된 Authentication을 반환하는 형식이다.실제 구동할 때는 잘 동작하는데, 단위 테스트를 수행할 때는 authenticationManagerBuilder.getObject()에서 NPE가 발생했다.@RequiredArgsCon..
현재 개발 중인 프로젝트에서 Spring Security와 JWT를 이용해 로그인 로직을 구현하고 있다. 구현 중 인증(Authentication) 예외와 JWT 예외 처리를 따로 분리하기 위한 과정을 정리해 보았다. 🔙 이전 진행사항 [Spring Security] SecurityConfig permitAll() 적용 안 되는 이유Spring Security를 도입하면 SecurityConfig 클래스 파일에서 웹 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 메커니즘을 설정하고 관리하게 된다. 🌱 SecurityConfig.class@RequiredArgsConstructor@Conchaewsscode.tistory.com [Spring Security]..
현재 개발 중인 프로젝트에서 Spring Security와 JWT를 이용해 로그인 로직을 구현하고 있다. 구현 중 SecurityConfig의 permitAll() 메서드와 JwtAuthenticationFilter의 shoudNotFilter() 메서드의 효율적인 관리를 위한 과정을 정리해 보았다. 🔙 이전 진행사항 [Spring Security] SecurityConfig permitAll() 적용 안 되는 이유Spring Security를 도입하면 SecurityConfig 클래스 파일에서 웹 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 메커니즘을 설정하고 관리하게 된다. 🌱 SecurityConfig.class@RequiredArgsConstruct..
Spring Security를 도입하면 SecurityConfig 클래스 파일에서 웹 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 메커니즘을 설정하고 관리하게 된다. 🌱 SecurityConfig.class@RequiredArgsConstructor@Configurationpublic class SecurityConfig { private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final JwtAuthenticationFilter jwtAuthent..
·Back-end
Postman은 API 개발 및 테스트를 위한 협업 플랫폼이자 API 클라이언트로 주로 웹 API를 테스트하고 디버깅하는 데 사용된다. Postman에서 API 테스트를 할 때 API가 accessToken과 같은 다른 API(로그인 API, 토큰 재발급 API 등)의 결괏값을 파라미터로 사용하는 경우, 결괏값이 변경될 때마다(토큰 유효기간 만료 혹은 재로그인) 포스트맨의 환경변수 값을 변경해주어야 하는 불편함이 있다.내가 개발하는 프로젝트는 JWT 토큰 인증 방식을 사용하기 때문에 로그인 후 JWT 토큰을 헤더에 자동으로 삽입하는 방법을 정리해보았다. 1️⃣ 애플리케이션 Collection 설정애플리케이션 Collection의 Variables 탭에서 accessToken 변수를 등록해 준다. 애플리..
·Back-end
1️⃣ Spring Security FiltersSpring Security Filter들은 HTTP 요청을 처리하고 보안 관련 작업을 수행한다.만약 인증이 필요하면 사용자 로그인으로 안내하거나, 인증받은 정보가 있다면 기존의 정보를 사용한다. 일반적으로 웹 애플리케이션에서 사용자의 로그인 요청을 처리하고 인증하는 데 UsernamePasswordAuthenticationFilter가 사용된다. 이는 HTTP 요청에서 username과 password를 추출해 Authentication 타입 객체를 준비한다.Authentication은 인증된 사용자의 세부 정보를 저장하는 클래스이다.public class UsernamePasswordAuthenticationFilter extends AbstractAu..
·Back-end
😼 DTO(: Data Transfer Object)public class AccountResponseDto { private final Long id; private final String username; private final String nickname;}DTO는 계층간에 데이터를 전달하기 위해 사용되는 클래스이다. 따라서 DTO의 데이터는 변하면 안된다는 특징을 갖고 있다.따라서 보통의 DTO 클래스 필드는 final 속성을 갖거나 setter를 선언하지 않는다. 또한 DTO 클래스는 별도의 메서드를 포함하고 있지 않고 단순히 데이터만을 포함하고 있다. 😼 레코드(record)란?public record AccountResponseDto( Long id, Stri..
·Back-end
🌱 어노테이션의 기본 구조이미 선언되어 있는 어노테이션을 보면 기본적으로 @Target, @Retention이 설정되어 있는 것을 볼 수 있다.여기서 이 @Target, @Retention이 뭘까? 🌱 Meta Annotation이란?메타 어노테이션은 어노테이션을 정의할 때 사용되는 어노테이션이다.메타 어노테이션은 다른 어노테이션 위에 선언되어 그 어노테이션의 사용 방법과 동작을 지정한다. 🫧 @Retention어노테이션을 언제까지 유지할것인지 지정한다.소스 코드, 클래스 파일, 런타임 중 어느 시점까지 어노테이션 정보를 유지할지를 결정한다.1️⃣ @Retention(RetentionPolicy.SOURCE)컴파일 전까지만 유지되는 어노테이션이 필요한 경우 사용하는 옵션, 컴파일러에 의해 제거된다...
서채리
'Back-end' 카테고리의 글 목록 (2 Page)