공부한 내용정리 및 어려운점 정리
회원가입 MemberController
회원가입페이지로 이동하는 MemberController에서
@GetMapping("/join")
@PostMapping("/join")
같은 경로에 대해 왜 Get방식, Post방식으로 나누는지 궁금했다.
일반적으로 웹 브라우저에서 url을 요청하는 방법은 GET방식의 요청으로 들어온다. 따라서 /join에 해당하는 페이지를 요청할 때 GET방식으로 들어오게 되고 회원가입 페이지를 보여주게 된다.
회원가입 페이지에서 내용을 작성하여 /join 페이지로 submit한다면 이는 POST방식으로 요청이 들어온 것이다.(폼의 전송 방식을 post방식으로 했을 때) 따라서 이 경우 회원가입 정보를 가지고 post방식으로 전송된 데이터를 갖고 postmapping을 따라가는 것이다.
문제는 postmapping에서 try문으로 진입조차 못한다. join폼에서 데이터를 받아오고 판별하는 문제가 생긴다.
securityConfig에서
rememberme() 아래의 .key()는 임의로 설정했으나 나중에 application properties에서 바꿔줘야 한다. 이는 로그인을 토큰 형식으로 기억하여 계속 로그인을 하지 않아도 되게 하는 기능을 사용할 때 이용된다.
PersistentTokenRepository는 이런 토큰 내용을 db에 저장하는 내용을 담고 있다.
MemberJoinDTO는 회원가입 폼을 작성하고 받은 데이터를 저장하는 객체이다.
BaseEntity는 user정보에서 공통적으로 들어가는 시간 데이터 등을 가지고 있는 객체이다.
Member는 db와 연결되어 저장될 유저정보 객체이다. 여기서 roleSet은 권한에 대한 변수이다.
MemberRepository는 JpaRepository를 가져와서 db와 연결하는 쿼리문을 쓸 수 있다. getWithRoles는 user_id가 가져온 user_id이며 social이 false인 내용을 가져오게 하는 메서드이다.
MemberSecurityDTO는 user의 권한이 맞는지 판별하기 위한 객체이다 아직 판별까지는 안했다.
CustomUserDetailsService는 마찬가지로 user의 권한을 판별하는 기능을 담당하며 아직 제대로된 구현은 하지 않았다.
MemberService는 인터페이스로 우선 Exception에 대한 내용을 담고 있다.
MemberServiceImpl은 구현체로서 join폼에서 받은 데이터가 이미 있는 데이터인지 판별하고 저장하는 역할을 담당하는데 여기서 막혀있는 상태다.