본문 바로가기

반응형
SMALL

Backend/Spring

(5)
[Spring Boot] 회원 가입 & 로그인(5) 이번에는 소셜 로그인 코드를 작성해보도록 하겠습니다. 소셜 로그인을 위한 설정은 많은 블로그에서 많이 다루고 있어서 생략 하도록 하겠습니다. 소셜 로그인을 사용하기 위하여 build.gradle에 추가를 해줍니다. build.gradle // Oauth2.0 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 소셜 로그인을 사용하기 위하여 OAuth2Attribute와 OAuth2UserService를 상속받은 CustomOAuth2UserService를 작성하도록 하겠습니다. OAuth2Attribute.java @Getter public class OAuth2Attribute { // OAuth2에서 받아온 속성 정보..
[Spring Boot] 회원 가입 & 로그인(4) 이번엔 Security 설정과 Token에 대해 설정하려고 합니다. 먼저 패스워드 암호화를 적용하기 위한 Config 파일을 만들었습니다. PasswordEncoderConfig.java @Configuration public class PasswordEncoderConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } 다음 순서에 따라 작성된 Security 설정입니다. SecurityFilterChain filterChain(HttpSecurity http) 메서드: 이 메서드는 SecurityFilterChain을 빈으로 등록하고, 필터 체인을 구성하는 역할을 합니다. http.he..
[Spring Boot] 회원 가입 & 로그인(3) 로그인을 하기 위해 JWT 토큰을 사용하기로 결정 했습니다. 그래서 그전에 JWT 토큰이 무엇인지 어떻게 사용되는 것인지 먼저 간단하게 알아보려고 합니다. JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식입니다. JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있다. 따라서 사용자가 JWT 를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 돌려줍니다. JWT는 . 을 구분자로 ..
[Spring Boot]회원 가입 & 로그인(2) 이번엔 도메인 설정 이후 컨트롤러와 서비스를 만들어 보도록 하겠습니다. 먼저 반환 형식을 맞추려고 합니다. Response { "status" : "success", "message" : "회원 가입 성공", "data" : { "userId" : 1 } } 위와 같은 형태로 반환을 하기 위해 CommonResponse와 ResultDto를 작성하도록 하겠습니다. CommonResponse @Getter @Builder public class CommonResponse { private String status; private String message; private HttpStatus httpStatus; private Data data; } ResultDto @Getter @Setter @AllAr..
[Spring Boot]회원 가입 & 로그인 (1) 기본 회원 가입 및 로그인을 구현하면서 소셜 로그인도 같이 병합해서 사용해야겠다는 생각이 들어 만들어 봤습니다. ERD는 쇼핑몰을 생각하면서 만들어 봤습니다. 먼저 기본 회원 가입 ERD 입니다. user 테이블과 address 테이블을 따로 만들어 1:N 관계를 가지게 했습니다. 그 이유는 1명의 유저에 여러 개의 주소가 존재할 수 있다고 생각했습니다. User Entity @Getter @NoArgsConstructor @Entity public class User extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private S..

반응형
LIST