SpringBoot
스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 3
심나라
2022. 10. 8. 21:02
728x90
SpringBoot에서 스프링 시큐리티를 사용하여 소셜로그인 기능을 구현합니다.
구글의 로그인 인증정보를 발급 받았으니, 사용자 정보를 담당할 도메인인 User 클래스를 생성합니다.
package com.shimnara.ksshim.springboot.domain.user;
import com.shimnara.ksshim.springboot.domain.BaseTimeEntity;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Getter
@NoArgsConstructor
@Entity
public class User extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String email;
@Column
private String picture;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Role role;
@Builder
public User(String name, String email, String picture, Role role) {
this.name = name;
this.email = email;
this.picture = picture;
this.role = role;
}
public User update(String name, String picture) {
this.name = name;
this.picture = picture;
return this;
}
public String getRoleKey() {
return this.role.getKey();
}
}
@Enumerated(EnumTypes.STRING)
- JPA로 데이터베이스로 저장할 때 Enum 값을 어떤 형태로 저장할지 결정합니다.
- 기본적으로 int로 된 숫잘르 저장합니다.
- 숫자로 저장되면 DB를 확인할 때 그 값이 무슨 코드를 의미하는지 알 수가 없습니다.
- 그래서 문자열(EnumTypes.STRING)로 저장될 수 있도록 선언합니다.
각 사용자의 권한을 관리할 Enum 클래스 Role 을 생성합니다.
package com.shimnara.ksshim.springboot.domain.user;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public enum Role {
GUEST("ROLE_GUEST", "손님"),
USER("ROLE_USER", "일반 사용자");
private final String key;
private final String title;
}
스프링 시큐리티에서는 권한 코드에 항상 ROLE_ 이 앞에 있어야 합니다. 그래서 코드별 키 값을 ROLE-GUEST, ROLE_USER 등으로 지정합니다.
User의 CRUD를 책임질 UserRepository 클래스도 생성합니다.
package com.shimnara.ksshim.springboot.domain.user;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
findByEmail
- 소셜 로그인으로 반환되는 값 중 email을 통해 이미 가입된 사용자인지 처음 가입하는 사용자인지 판단하기 위한 메소드 입니다.
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 1
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 2
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 3
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 4
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 5
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 6
- 스프링 시큐리티를 사용한 소셜로그인(Google) 기능구현 7
- [참고자료]
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (이동욱 지음)
728x90