본문 바로가기

Spring Boot/Security

[SpringBoot Secyruty] 회원가입 페이지 만들기

 

첫번째 - 간단한 로그인 페이지 만들기

 

1. HTML 파일 생성 ㄱㄱ

src / main / resources / templates / loginForm.html 파일 만들기

 

2. HTML 작성 ㄱㄱ

loginForm.html 파일 작성 (코드는 아래에 첨부)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>로그인 페이지</title>
</head>
<body>
	<h1>로그인 페이지</h1>
	<form action="">
		<input type="text" name="username" placeholder="UserNmae"><br/>
		<input type="password" name="password" placeholder="password"><br/>
		<button>로그인</button>
	</form>
	
	<a href="/joinForm">아이디가 없음 ?</a>
</body>
</html>

 

3.Controller에 Mapping 메서드 추가 ㄱㄱ

브라우저 주소창에 localhost:8080/login 입력 시 -> loginForm.html 이동

 

두번째 - 간단한 회원가입 페이지 만들기

 

1. 패키지 생성 ㄱㄱ

com / goodbam / security1 / model 패키지 생성

 

2.클래스 생성 ㄱㄱ

com / goodbam / security1 / model / User 클래스 생성

 

3. 클래스 작성 ㄱㄱ

모델링 ㄱ

package com.goodbam.security1.model;

import java.sql.Timestamp;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import org.hibernate.annotations.CreationTimestamp;

import lombok.Data;

@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;
	@CreationTimestamp
	private Timestamp createDate;
	
}

 

4. HTML 생성 후 작성 ( 경로 및 파일명은 이미지 아래 설명글에 있음 ) ㄱㄱ

src / main / resources / templates / JoinForm.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>회원가입 페이지</title>
</head>
<body>
	<h1>회원가입 페이지</h1>
	<form action="/join" method="POST">
		<input type="text" name="username" placeholder="UserNmae"><br/>
		<input type="password" name="password" placeholder="password"><br/>
		<input type="email" name="email" placeholder="email"><br/>
		<button>회원가입</button>
	</form>
</body>
</html>

 

5. IndexController -> 메서드 추가 ㄱㄱ

	@GetMapping("/joinForm")
	public String joinForm() {
		return "joinForm";
	}
	
	@PostMapping("/join")
	public String join(User user) {
		System.out.println("테스트 :: > "+user);
		return "redirect:/loginForm";
	}

 

6. 서버로 전달 ㄱㄱ

 

7. 서버에서 확인 ㄱㄱ

굳 !

 

세번째 - Repository 만들기

 

1. 패키지 생성 ㄱㄱ

com / goodbam / security1 / repository 패키지 생성

2. 인터페이스 생성 ㄱㄱ

com / goodbam / security1 / repository / UserRepository 인터페이스 생성

3. 인터페이스 작성 ㄱㄱ

4. IndexController에서 한 번 불러보고 ㄱㄱ

5. IndexController -> join 메서드 수정 ㄱㄱ

	@PostMapping("/join")
	public String join(User user) {
		System.out.println("테스트 :: > "+user);
		user.setRole("ROLE_USER");
		
		// @CreationTimestamp 사용해서 입력하지 않아도 됨
		//user.setCreateDate(null);
		//user.setId(1);

		userRepository.save(user);
		return "redirect:/loginForm";
	}

 

 

네번째 - Password 암호화

    : Password 암호화를 하지 않으면 SpringBoot Security에 로그인이 되지 않음

 

1. SecurityConfig -> Been 등록 ㄱㄱ

	// 해당 메서드에서 리턴되는 오브젝트를 IoC로 등록
	// IoC 등록하면 어디서든 사용 가능
	@Bean
	public BCryptPasswordEncoder encodePwd() {
		return new BCryptPasswordEncoder();
	}

 

2. IndexController -> 호출 한 번 ㄱㄱ

	@Autowired
	private BCryptPasswordEncoder bCryptPasswordEncoder;

 

3. Password 암호화 ㄱㄱ

	@PostMapping("/join")
	public String join(User user) {
		System.out.println("테스트 :: > "+user);
		user.setRole("ROLE_USER");
		
		String rawPassword = user.getPassword(); // Getter로 패스워드 가져오고 
		String encPassword = bCryptPasswordEncoder.encode(rawPassword); // 암호화 ㄱㄱ
		user.setPassword(encPassword); // Setter로 암호화된 패스워드 저장 
		
		userRepository.save(user);
	
		return "redirect:/loginForm";
	}

 

4. 회원가입 다시 한 번 해보고 DB에 Password가 암호화돼서 저장되는지 확인 ㄱㄱ

굳 !