자세한건 깃허브에 커밋하였다.
써보니 되게 당연한거네 😅 대충 생각했으니 레츠고
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 30, unique = true)
private String username;
@Column(nullable = false, length = 100)
private String password;
@Column(nullable = false, length = 50)
private String nickname;
: id를 pk로 두고 @GenaratedValue
로 pk를 자동생성
: 근데 첨엔 UUID를 기본키로 두려했는데 VARCHAR는 Auto-Increment가 안된다는사실을 알아냄(부끄) 해당 오류
package com.study.board.repository;
import com.study.board.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, String> {
//username이랑 password찾는 JPA메소드
User findByUsernameAndPassword(String username, String password);
}
: JPA 사용
@Controller
public class UserController {
@Autowired
private UserService userService;
//회원가입 폼
@GetMapping("/user/signup")
public String userSignupForm(){
return "userSignup";
}
//회원가입 처리
@PostMapping("/user/signuppro")
public String userSignupPro(User user, Model model){
userService.insertUser(user);
model.addAttribute("message", "회원가입이 완료되었습니다.");
model.addAttribute("searchUrl", "/board/list");
return "message";
}
//로그인 폼
@GetMapping("/user/login")
public String userLoginForm(){
return "userlogin";
}
//로그인 처리
@PostMapping("/user/loginpro")
public String userLoginPro(User user, Model model){
//로그인 유무
User loginUser = userService.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());
//로그인 실패
if(loginUser==null){
model.addAttribute("message", "로그인 실패");
model.addAttribute("searchUrl", "/user/login");
return "message";
}
//성공
else {
return "redirect:/board/list";
}
}
}
userSignupPro
: 회원정보(user) 저장과 완료될 때 메세지 출력
userLoginPro
: 회원정보를 db에서 찾아보고 실패 메세지 혹은 리다이렉트 출력
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
//회원가입
public void insertUser(@NotNull User user){
user.setUsername(user.getUsername());
user.setPassword(user.getPassword());
user.setNickname(user.getNickname());
userRepository.save(user);
}
public User findUserByUsernameAndPassword(String username, String password) {
return userRepository.findByUsernameAndPassword(username, password);
}
}
insertUser
: 유저정보 저장
findUserByUsernameAndPassword
: JPA메소드로 username과 password 찾기
<form th:action="@{/user/signup}" method="get">
<button type="submit">회원가입</button>
</form>
<form th:action="@{/user/login}" method="get">
<button type="submit">로그인</button>
</form>
: 회원가입과 로그인 추가
: 회원가입과 로그인 버튼이 추가됨
: 회원가입버튼을 누르면 회원가입됨
: db에 갱신된 모습
: 로그인 시도
: 성공하여 게시판으로 리다이렉트(아직 세션구현은 안함)
: 잘못된 로그인 시 실패창과 함께 다시 로그인창으로 돌아감
로그인을 성공하는것까지는 참 쉽다!(사실 힘들었음) 하지만 로그인은 유지되어야 로그인이지.. 😅 Spring Security
를 안쓰고 하다가 좀 귀찮아져서 하다가 말아버림 ㅎ; 내일은 Spring Security
를 사용하여 로그인과 로그아웃을 마저 구현해봐야지~