JWT - 회원가입 로직 작성하기

최고요·2023년 5월 2일
2

JWT V1 

목록 보기
12/15
post-thumbnail

로그인을 학습하기 전 회원가입 로직을 간단하게 만들었습니다.
먼저, 회원가입시 입력한 비밀번호를 암호화 하기위해 BCryptPasswordEncoder 를 추가해줍니다.

JwtApplication

package com.choigoyo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@SpringBootApplication
public class JwtApplication {

	@Bean
	public BCryptPasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}
	public static void main(String[] args) {
		SpringApplication.run(JwtApplication.class, args);
	}

}

RestApiController

회원정보를 DB에 저장하기위해 UserRepository를 @Autowired 하고,
비밀번호를 DB에 저장시 보안을 위해 BCryptPasswordEncoder 를 @Autowired 합니다.

/join 요청이 들어왔을 때 처리를 위해 PostMapping타입으로 컨트롤러를 간단하게 합니다.

package com.choigoyo.controller;

import com.choigoyo.entity.UserEntityJWT;
import com.choigoyo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RestApiController {

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

    @GetMapping("/")
    public String home(){
        return "<h1>HOME</h1>";
    }

    @PostMapping("/token") // 토큰 테스트를 위해 임시 컨트롤러 생성
    public String token(){
        return "<h1>TOKEN</h1>";
    }

    @PostMapping("join")
    public String join(@RequestBody UserEntityJWT userEntityJWT) {
        userEntityJWT.setPassword(bCryptPasswordEncoder.encode(userEntityJWT.getPassword())); // 비밀번호 암호화
        userEntityJWT.setRole("user"); // 회원가입 기본 역할 세팅
        userRepository.save(userEntityJWT);
        return "회원가입이 완료되었습니다.";
    }
}

postman으로 회원가입에 필요한 정보 send해보기


json형식으로 각 값을 보내 컨트롤러가 정상 작동하여 회원가입이 완료되었다는 print문이 출력되었습니다.

DataBase

저장된 값을 확인해 보면 회원정보가 저장되면서 id 값은 자동으로 값이 부여되었고
비밀번호는 입력한 값이 노출되지 않도록 암호화가 잘 되어있습니다
role은 컨트롤러에서 기본적으로 user 로 값을 주었습니다.
userName값에도 입력한 값이 정상적으로 저장된 것을 확인할 수 있었습니다.

profile
i'm best

0개의 댓글