본문 바로가기
프로젝트/SpringSecurity

[Spring Security] 14. JWT를 이용해 로그인전 회원가입 및 db관련 수정사항

by dantriss 2023. 7. 18.

유튜브에서 스프링시큐리티를 심화교육하면서 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


username과 password를 입력하면 db에 유저 정보가 저장되게 만들어 보자

우선 securityConfig로 이동해서 BcryptPasswordEncode를 의존성주입을 위해서 Bean 등록을 해준다.

@Bean
BCryptPasswordEncoder bCryptPasswordEncoder(){
    return new BCryptPasswordEncoder();
}

 

RestApiController로 이동해서 BCryptPasswordEncode와 UserRepository를 autowired 시켜준다.

@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Autowired
private final UserRepository userRepository;

 

그 후 join을 postMapping으로 받아서 비밀번호를 해쉬화 해서 암호화 한 비밀번호를 user에 set 해주고 

기본권한을 user로 set 해준 후 userRepository를 이용해 db에 저장을 한다.

@PostMapping("/join")
public String join(@RequestBody User user){

    user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
    user.setRoles("ROLE_USER");
    userRepository.save(user);
    return "회원가입완료";
}

 

그 후 username 과 password를 보내면 회원가입완료가 뜨고 db를 확인해보면 유저 정보가 저장된걸 확인할 수 있다.

 


콘솔에 insert 문이 뜨는걸 확인 했는데 db를 확인해보니 값이 들어가지도 않고 테이블이 만들어지지도 않는다?

 

우선 모델에 들어가서 @Entity어노테이션을 잘 작성했는지 확인한다.

 

그 후 application.yml에 들어가서 띄어쓰기가 잘 되어있는지 확인한다.

각각의 차이는 스페이스바 2번 또는 tap키 한번이다.

 

난 스키마도 다른걸로 설정을 했는데 자꾸 다른 데이터베이스에 테이블이 생성이된다?

 

데이터베이스 설정에 들어가서 연결이 잘되는지 연결테스트를 진행해보고 아래와같이 성공이 떠야한다.

 

localhost 옆에 숫자를 눌러서 원하는 스키마로 변경을 하고 해당 스키마와 application.yml에 설정한 데이터베이스와 같은지 확인해보자.

 

댓글