첫번째 - 간단한 로그인 페이지 만들기
1. HTML 파일 생성 ㄱㄱ
2. 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 메서드 추가 ㄱㄱ
두번째 - 간단한 회원가입 페이지 만들기
1. 패키지 생성 ㄱㄱ
2.클래스 생성 ㄱㄱ
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 생성 후 작성 ( 경로 및 파일명은 이미지 아래 설명글에 있음 ) ㄱㄱ
<!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. 패키지 생성 ㄱㄱ
2. 인터페이스 생성 ㄱㄱ
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가 암호화돼서 저장되는지 확인 ㄱㄱ
'Spring Boot > Security' 카테고리의 다른 글
[SpringBoot Secyruty] 구글 로그인 (2) (0) | 2022.04.24 |
---|---|
[SpringBoot Secyruty] 구글 로그인 (1) (0) | 2022.04.23 |
[SpringBoot Secyruty] 권한 처리 (0) | 2022.04.22 |
[SpringBoot Secyruty] 환경 설정 (0) | 2022.04.22 |
[SpringBoot Security] 로그인 페이지 만들기 (0) | 2022.04.22 |