Search

19. 스프링부트 포토그램 인증 회원가입 비밀번호 해시

포토그램 인증 구현하기

회원가입 구현

회원가입할때 비밀번호 암호화나 권한관련해서 진행.
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로 잡히는걸 알 수 있다.
쌀로 가입 후 다시 같은 쌀 아이디로 가입하면은
유니크 제약조건에 위배됐다 라는 오류다.

*참고