[TIL]20230630 - Spring 회원서비스
오늘은 회원가입, 로그인 기능을 JWT를 이용하여 구현한 블로그 프로젝트를 진행하였다.
기존에 진행했던 Lv1과제에서는 회원기능 없이 게시글을 작성할 때 작성자와 비밀번호를 같이 작성하여 수정, 삭제 시 비밀번호를 이용하여 진행하는 방식으로 진행했었는데 이번 Lv2과제에서는 회원 기능을 통해 JWT토큰으로 유저 정보를 얻은 뒤 로그인한 유저의 게시글만 수정 삭제하는 기능을 구현하려 하였다.
그래서 Spring Security를 사용하여 유저의 인증, 인가 처리를 하려하였다.
그 과정에서 코드를 작성하던 중 블로그 프로젝트에서 따로 관리자 역할과 일반 유저 역할의 구분이 없는것 같아 UserRole enum 클래스를 삭제하고 모든 User_Role과 관련된 파라미터를 모두 삭제했었다.
모든 코드를 작성하고 난뒤 회원가입기능까지는 완료하였지만 로그인 시 jpa 를 통해 select문이 두번 작성되는 현상이 발생 되었다. 같이 과제를 진행하던 페어와 한 3-4시간은 시도해본뒤 도저히 진행이 안되고 흐름을 모르겠어서 결국 더 높은 레벨의 과제를 진행중이던 분께 도움을 요청하였다.
그분이 한참 코드를 보시고나서 User_Role과 관련된 기능을 임의로 삭제했다는 것을 알게된 후 알려주신것은 Spring Security에는 권한이 필수인데 그게 임의로 삭제되었기 때문인것 같다 하셨다. 그래서 다시 User_role에 관련된 모든 부분을 복구하고 난 뒤 다시 실행해보니 정상적으로 실행되었다.
또한 과제를 진행하면서 자잘한 오류들이 있었는데 그 중에는 사소한 오타로 인홰 벌어지는 오류도 있었다.
postman으로 회원가입요청을 보내고 응답으로 JSON형식의 메시지와 상태코드를 받으려했는데 어떤 방식으로도 안맏아져서 한참 해메었다.
알고보니 컨트롤러의 어노테이션이 RestController가 아닌 그냥 Controller여서 이러한 상황이 발생되었다.
아무래도 이전에 쓰던 코드를 재사용 하다보니 이전 컨트롤러에서 모든 응답은 페이지를 연결해주었는데 이번은 그렇지 않아 겪은 상황이었다.
오늘 과제를 진행하면서 배운점은 도저히 모르겠을 때는 주위에 도움을 청하면 쉽게 해결 할수도 있었다는것과 심각한 오류는 종종 사소한 실수에서 나온다는것 두가지를 크게 배웠다.
앞으로 진행되는 과정들은 거의 프로젝트 형식으로 진행될텐데 뜻깊은 경험을 쌓은것 같았다.