💻dev

Spring Boot에서 비밀번호 변경 기능을 구현하려고 한다. 구현 전에 먼저 알아둘 것을 정리해본다. 비밀번호 변경 과정 1. 회원가입이 되어 있는 상태여야 한다. 2. 로그인 상태여야 한다. 3. DB에는 암호화된 password(pw)가 저장되어 있다. 4. 사용자에게 기존 pw와 새로운 pw를 입력 받는다. 5. 기존 pw가 현재 사용자의 pw와 일치한다면 해당 회원의 pw를 새로운 pw로 변경한다. 6. 일치하지 않는다면 오류를 발생시킨다. UpdatePasswordReq @Getter public class UpdatePasswordReq { @NotBlank private String currentPassword; @NotBlank @Pattern(regexp = "(?=.*[a-zA-Z]..
Spring Boot에서 비밀번호 변경 기능을 구현하려고 한다. 구현 전에 먼저 알아둘 것을 정리해본다. 회원 정보 수정 과정 1. 회원가입이 되어 있는 상태여야 한다. 2. 로그인 상태여야 한다. 3. 회원정보 수정 가능한 정보는 닉네임과 프로필 이미지 뿐이다. 4. 사용자에게 닉네임 또는 프로필 이미지를 입력받는다. 5. 닉네임이 변경 됐다면 닉네임 중복체크를 진행한다. 6. 프로필 이미지가 변경됐다면 기존 이미지 파일을 서버에서 삭제 한다. UpdateMemberReq @Getter public class UpdateMemberReq { @NotBlank @Pattern(regexp = "^[ㄱ-ㅎ가-힣a-z0-9-_]{2,10}$", message = "닉네임은 특수문자를 제외한 2~10자리여야 ..
PasswordEncoder 설정하기 Spring Security가 지원해주는 PasswordEncoder를 사용해보자. build.gradle //Spring Security implementation 'org.springframework.security:spring-security-crypto:5.7.1' PasswordEncoder를 @Bean으로 등록 내가 진행한 프로젝트의 경우 Spring Security 적용을 위한 SecurityConfig 클래스에 등록하였다. @Configuration public class SecurityConfig { @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.crea..
Spring Boot에서 로그인을 구현하자! 처음 백엔드 팀원과 역할을 나눌 때, 도메인 별로 분배하는 게 좋다고 판단이 되었다. 두 명이기 때문에 사이즈가 큰 "회원"과 "이벤트"를 하나씩 맡고 나머지 기능들을 나누게 되었다. 그렇게 나는 회원을 맡으며 인증 파트를 맡게 되었다. 먼저 로그인을 어떤 방식으로 구현할 것인지 결정해야만 했다. 세션 방식으로 간단히 구현할 수 있었지만 이왕이면 JWT를 적용하고 싶었다. 그렇게 Spring Security와 JWT를 적용하기 위한 여정이 시작되었다. JWT(Json Web Token)는 무엇이고 왜 선택했는가? JWT는 사용자 인증과 식별을 위한 토큰 기반 인증 방식이다. 이 토큰은 사용자의 권한 정보나 서비스 이용을 위한 정보를 포함하며, JWT를 사용하면..
스프링 프레임워크는 애플리케이션의 설정을 관리하고 구성하기 위해 다양한 방법을 제공합니다. 이 중에서도 @ConfigurationProperties와 @ConfigurationPropertiesScan은 애플리케이션의 설정을 효율적으로 관리하고 사용자 정의 설정을 쉽게 구성하기 위해 사용되는 중요한 기능입니다. @ConfigurationProperties란? @ConfigurationProperties는 스프링 프레임워크에서 제공하는 어노테이션으로, 애플리케이션의 설정 정보를 자바 클래스로 바인딩하는 데 사용됩니다. 이를 통해 설정 파일이나 환경 변수에서 가져온 설정 값을 객체로 매핑할 수 있습니다. 예를 들어, 데이터베이스 연결 정보, 외부 서비스 API 키, 애플리케이션의 고유한 속성 등을 자바 객체..
RESTful API를 만들 때 단건의 값을 반환하는 것이 아니라 여러 개의 값들을 반환할 상황이 있다. 이번 프로젝트의 경우 여러번 그런 상황이 있었는데 Spring으로 처음 프로젝트를 진행해보고, 특히, Page를 사용해서 반환하기 때문에 처음에는 약간 막막했다. DTO와 Builder 패턴을 사용하여 어떻게 List로 반환하는 지 자세한 예시를 통해 알아보도록 하자. ReviewController @RestController @RequiredArgsConstructor @RequestMapping("/reviews") public class ReviewController { private final ReviewService reviewService; @Operation(summary = "나의 리뷰..
Spring Security가 뭔데? Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차 Spring Security는 기본적으로 인증 절차를 거친 후에 인가 절차를 진행하게 되며, 인가 과정에서 해당 리소스에 대한 접근 권한이 있는지 확인을 하게 된다. Spring Security에서는 이러한 인증과 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다. Principal(접..
@NoArgsConstructor와 @AllArgsConstructor은 생성자 코드를 더 간결하게 작성할 수 있는 강력한 도구입니다. 이 어노테이션들은 주요 필드들을 자동으로 초기화하거나, 특정 상황에서 기본 생성자를 자동으로 생성해주므로, 불필요한 반복 작업을 줄이고 코드 유지 보수성을 향상시킬 수 있습니다. @NoArgsConstructor란? @NoArgsConstructor는 클래스에 파라미터가 없는 기본 생성자를 자동으로 생성해줍니다. 이는 주로 JPA 엔티티 클래스와 같이 파라미터 없는 기본 생성자가 필요한 경우에 유용합니다. 일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access=AccessLevel.PROTECTED)와 같이 사용합니다. 무분별하게 ..
쁜새
'💻dev' 카테고리의 글 목록 (4 Page)