백엔드(37)
-
롬복 @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor 어노테이션 알아보기
스프링으로 개발을 하다 보면 생성자를 자동으로 생성해 주는 @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor 어노테이션을 자주 쓰게 되는데 이번 게시글에서는 이것들이 어떤 기능을 가지고 있는지 알아보려고 합니다. 👀 간단하게 표로 확인해 보자 어노테이션 기능 @AllArgsConstructor 내부에 선언된 모든 필드 값을 파라미터로 받는 생성자를 생성 @NoArgsConstructor 파라미터가 없는 생성자를 생성한다 @RequiredArgsConstructor final이나 @NotNull로 선언된 필드만을 파라미터로 받는 생성자를 생성한다 # @AllArgsConstructor 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동..
2024.01.15 -
SOLID 원칙
이전에 디자인 패턴과 SOLID 원칙에 대하여 게시글을 작성했는데, 이번에는 SOLID 원칙별 예시 코드와 함께 정리해보려고 한다. # SOLID 원칙이란? SOLID 원칙은 객체 지향 프로그래밍의 다섯 가지 기본 원리로 SRP, OCP, LSP, ISP, DIP 총 5가지로 구성되어 있으며 이를 준수하여 코드를 작성하면 유연하고 확장 가능한 아키텍처를 구축할 수 있다. SOLID 원칙은 개발자들에게 일관된 설계 구조를 제공하여 효율적이고 유지보수 가능한 코드를 작성하는 데 도움을 준다. # SOLID 원칙 1. 단일 책임 원칙 - Single Responsibility Principle / SRP : 하나의 클래스는 하나의 책임(기능)만을 가져야 하고, 클래스를 변경해야 하는 이유는 단 하나여야 한다...
2024.01.10 -
디자인 패턴과 SOLID 원칙
# 디자인 패턴과 SOLID 원칙이 소프트웨어 개발에서 중요한 이유 소프트웨어 개발에서 핵심은 코드의 유지보수성, 가독성, 그리고 재사용성이다. 디자인 패턴과 SOLID 원칙의 적용은 일관된 스타일로 개발을 가능하게 하고, 이는 코드의 효율성을 향상시키고 전체 프로젝트 코드 품질을 높이는 데 기여한다. 특히, 여러 개발자들이 협업하거나 코드를 이해해야 할 때 표준화된 구조와 원칙을 따르면 개발 시간을 단축할 수 있고, 팀 간 커뮤니케이션도 원활하게 할 수 있다. 이러한 접근은 팀의 효율성을 향상시키는 중요한 역할을 한다. 따라서, 디자인 패턴과 SOLID 원칙은 소프트웨어 개발에서 코드 품질과 팀의 협업을 개선하기 위한 필수적인 가이드로 작용한다. # SOLID 원칙 1. 단일 책임 원칙 (Single ..
2024.01.09 -
[Spring Security] 세션 제어하기
# 동시 세션 제어 API에 대하여 알아보자 invalidSessionUrl() : 세션이 유효하지 않을 때 이동할 페이지 경로 maximumSessions() : 최대로 허용 가능한 세션 수, -1 : 무제한으로 허용 maxSessionsPreventsLogin(true) : 최대 동시 접속 허용 세션 수를 초과한 경우 인증 실패 처리 maxSessionsPreventsLogin(false) : 최대 동시 접속 허용 세션 수를 초과한 경우 인증 기존 세션 만료 처리 expiredUrl() : 세션이 만료된 경우 이동 할 페이지 경로 http.sessionManagement( (session) -> session // 동시 세션 제어 .invalidSessionUrl("/invalid") // 세션이 유..
2024.01.04 -
[Spring Security] AnonymousAuthenticationFilter
# AnonymousAuthenticationFilter 익명 사용자에 대한 인증을 처리하는 필터이다. (`익명 사용자` 란 아직 로그인하지 않은 유저, 유효한 인증토큰이 아닌 유저를 의미) 익명 사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용된다. `익명 사용자`는 로그인이 가능한 경로를 통해 인증허가를 을 받게 될 경우, 일반 사용자로 등극하여, 로그인 접속 및 향후 접속유지가 가능하게된다. 인증을 받지 못한 사용자는 `익명 사용자`로 분류되어 익명사용자 인증 토큰이 익명 사용자 관리 명목으로 생성되지만 로그인과 관련된 접근 권한은 받지 못하고 세션도 생성되지 않고 로그인 페이지로 리다이렉트 시킨다. 화면에서 인증 여부를 구현할 때 isAnonymous() 와 isAuthenticated(..
2024.01.04 -
[Spring Security] Remember Me 구현하기
# Remember Me 기능이란 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능이다. Ex. 사용자 ID 기억하기, 자동 로그인 Remember-Me 쿠키에 대한 HTTP 요청을 확인 후 토큰 기반 인증을 사용해 유효성을 검사하고 검증이 완료되면 로그인이 성공적으로 이루어진다. 사용자 라이프 사이클 인증 성공 👉 Remember-Me 쿠키 설정 인증 실패 👉 쿠키가 존재하면 쿠키 무효화 로그아웃 👉 쿠키가 존재하면 쿠키 무효화 # Remeber Me API에 대하여 알아보자 rememberMeParameter() : remember-me 파라미터 이름 설정, 기본 파라미터명은 remember-me tokenValiditySeconds() : 쿠키 만료 시간 설정, De..
2024.01.04