포토그램 인증 구현하기
회원가입 구현
회원가입할때 비밀번호 암호화나 권한관련해서 진행.
AuthService.java에서 회원가입 함수에 @Transactional 을 붙여주자
@Transactional //Write(Insert, Update, Delete)
public User 회원가입(User user) {
//회원가입 진행
User userEntity = userRepository.save(user);
return userEntity;
}
Java
복사
붙여주면 회원가입이라는 함수가 실행되고 끝날때 까지 트랜잭션 관리를 해준다.
그리고 패스워드 암화화 진행을 위해서 BCrypt 사용할거다
SecurityConfig.java
@Bean
public BCryptPasswordEncoder encode() {
return new BCryptPasswordEncoder();
}
Java
복사
@Bean까지 걸어주면 SecurityConfig가 IoC에 등록될때 @Bean을 읽으면서 \
new BCryptPasswordEncoder()을 리턴하면서 IoC가 BCryptPasswordEncoder를 지워주고 있다.
그러면 이제 DI에서 쓰기만 하면된다
AuthService.java
RequiredArgsConstructor
@Service //1. IoC등록 2.트랜잭션 관리
public class AuthService {
private final UserRepository userRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
@Transactional //Write(Insert, Update, Delete)
public User 회원가입(User user) {
//회원가입 진행
//패스워드 암호화
String rawPassword = user.getPassword();
String encPassword = bCryptPasswordEncoder.encode(rawPassword);
user.setPassword(encPassword);
//회원가입 관련 권한
user.setRole("ROLE_USER"); //관리자 ROLE_ADMIN
User userEntity = userRepository.save(user);
return userEntity;
}
}
Java
복사
이렇게 가입후 user 테이블을 보면
cos가 잘 들어가 있다.
패스워드에 암호화 처리와 권한이 들어온걸 볼 수 있다.
근데 내가 저번에 ssar로 가입 한번 했었는데 이번에도 가입이 된다는 문제가 있다.
쌀 유저가 두명이 되버림
이러면 나중에 로그인할때 문제가 될 수 있다.
우선 해당 데이터를 다 날려주도록 하자.
DELETE문을 써도 되지만
저번에 알려줬던 application.yml 파일에서 update 부분을 create로 잠깐 바꿔주자.
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
XML
복사
그러면 테이블에 데이터가 없어진걸 볼 수 있다.
다시 update로 변경해서 저장 꼭 해주기.
User.java에 제약조건을 걸어줄거다.
@Column(unique = true)
private String username; //유저아이디
XML
복사
테이블을 다시 drop 시키고 (create로 변경 후 다시 update로 변경)
서버랑 DB에서 이렇게 unique로 잡히는걸 알 수 있다.
쌀로 가입 후 다시 같은 쌀 아이디로 가입하면은
유니크 제약조건에 위배됐다 라는 오류다.