-
Spring Security - 회원가입Framework & Library/Spring Security 2021. 9. 30. 16:21
User 객체 생성
@Entity @Data public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String username; private String password; private String email; private String role; private String provide; private String providerId; @CreationTimestamp private Timestamp createDate; }
ㆍ 위 코드는 회원가입을 하는 사용자의 정보를 받기 위한 User 객체이다.
ㆍ User 객체는 id, 사용자 이름, 패스워드 등의 정보를 담고 있다.
회원가입
회원가입 양식 Controller
@GetMapping("/joinForm") public String joinForm() { return "joinForm"; }
ㆍ IndexController 클래스에 회원가입에 대한 양식을 입력받는 메서드를 추가한다.
loginForm.html, joinForm.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>로그인 페이지</title> </head> <body> <h1>로그인 페이지</h1> <hr/> <form> <input type="text" name="username" placeholder="Username"/> <br/> <input type="password" name="password" placeholder="Password"/> <br/> <button>로그인</button> </form> <a href="/joinForm">회원가입</a> </body> </html>
ㆍ 사용자로부터 로그인 양식을 입력받는 html 파일이다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>회원가입 페이지</title> </head> <body> <h1>회원가입 페이지</h1> <hr/> <form action="/join" method="post"> <input type="text" name="username" placeholder="Username"/> <br/> <input type="password" name="password" placeholder="Password"/> <br/> <input type="email" name="email" placeholder="Email"/> <br/> <button>회원가입</button> </form> </body> </html>
ㆍ 사용자로부터 회원가입 양식을 입력받는 html 파일이다.
UserRepository 생성
public interface UserRepository extends JpaRepository<User,Integer> { }
ㆍ 데이터베이스와 통신하기 위해 UserRepository 인터페이스를 생성한다.
패스워드 암호화
@Bean public BCryptPasswordEncoder encoder() { return new BCryptPasswordEncoder(); }
ㆍ SecurityConfig 클래스에 위 코드를 추가한다.
ㆍ BCryptPasswordEncoder는 사용자의 패스워드를 암호화해주는 객체이다.
ㆍ @Bean 애너테이션을 통해 해당 메서드의 리턴되는 객체를 IoC로 등록해준다.
회원가입 Controller
@Autowired private BCryptPasswordEncoder encoder;
ㆍ IndexController 클래스에 위 코드를 추가한다.
ㆍ @Autowired 애너테이션을 통해 Ioc에 등록된 BCryptPasswordEncoder 객체를 찾아서 주입시킨다.
@PostMapping("/join") public String join(User user) { System.out.println(user); user.setRole("ROLE_USER"); String rawPassword = user.getPassword(); String encPassword = encoder.encode(rawPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/loginForm"; }
ㆍ IndexController 클래스에 회원가입을 수행하는 join() 메서드를 작성한다.
ㆍ 회원가입을 한 사용자에게 ROLE_USER 권한을 부여하고, 입력받은 패스워드를 encoder 객체를 통해 암호화를 한 후 데이터베이스에 저장한다.
회원가입 테스트
회원가입 양식 입력
ㆍ 회원가입 페이지에서 양식을 모두 작성한 후 회원가입을 수행한다.
데이터베이스 확인
ㆍ 데이터베이스 확인 결과 패스워드가 암호화되었고 입력한 정보 또한 저장된 것을 확인할 수 있다.
728x90'Framework & Library > Spring Security' 카테고리의 다른 글
Spring Security - 구글 로그인 준비 (0) 2021.10.02 Spring Security - 권한 처리 (0) 2021.10.01 Spring Security - 로그인 (0) 2021.10.01 Spring Security - 시큐리티 설정 (0) 2021.09.30 Spring Security - 프로젝트 생성 및 환경설정 (0) 2021.09.30