항해99/개발일지

20220202 개발일지

paran21 2022. 2. 3. 10:06

오늘은 회원가입 유효성 검사 부분을 진행하고 테스트 코드를 작성하였다.

다른 분들과 과제 한 내용을 얘기하면서 다른 방식으로 수정하기도 하고, 이 방법이 좋은 방법인지에 대해서도 더 생각해보게 되었다.

 

1. 회원가입 유효성

회원가입 유효성은 validation을 이용하여 스프링 서버 자체에서 검사를 하는 것으로 작성을 했었는데,

회원가입 데이터를 굳이 서버에 넘겨서 다 유효성 검사를 해야되는지 고민이 되었다.

프론트에서 일단 유효성검사를 마친 데이터만 서버로 보내주고 싶어서 서버에 있는 부분을 지우고 프론트에서 유효성 검사를 하는 코드를 작성하였다.

 

기존에 회원가입이 form action으로 들어가 있었는데 ajax로 변경하니 계속 에러가 났다.

해당 컨트롤러에 return값이 redirect:/user/login으로 되어 있었는데 이 부분을 객체로 바꿔주는 뷰 쪽에서 에러가 떴다.

뷰를 보여주는 부분은 이미 다른부분에 링크 이동시 html을 내려주는 부분이 있었는데 왜 에러가 뜨는지 잘 모르겠다.

이 부분 해결을 못해서form/action은 그대로 유지하고 유효성 검사를 통과해야 회원가입 버튼을 활성화하도록 변경하였다.

또, form안에 onclick으로 다른 기능과 연결되지 않은 버튼이 있으면 자동으로 onsubmit된다고 해서 회원가입 버튼은 form바깥으로 뺐다.

 

먼저 아이디의 중복검사 버튼과 함수를 만들었다.

아이디의 형식 등 조건을 통과하면 ajax로 아이디를 보내 서버에서 중복 검사를 하도록 만들었다.

그리고 중복검사 이후에는 아이디값을 수정할 수 없도록 readonly 값을 주었다.

그리고 회원가입 버튼을 눌렀을 때 나머지 비밀번호, 이메일 유효성 검사를 통과해야 제출이 되도록 하였다.

 

하면서 프론트에서 유효성 검사를 진행하는 것은 좋은데 서버 쪽에서도 최소한 중복 아이디는 막아놔야지 않을까, 라는 생각이 들었다.

심화 강의 코드를 참고하면서 등록할 때 아이디 중복 검사를 하는 부분이 있어서 그대로 두기는 했는데 해당 에러가 발생했을 때 에러메시지를 프론트에 또 띄워주어야 하나 고민이 되었다.

결과적으로 테스트 코드를 작성하면서 메시지를 따로 또 프론트에 보내지는 않았다.

 

2. 에러페이지

에러페이지를 EntryPoint를 써서 중간에 이동하게 하였는데 사실 다른 기능은 없고 페이지 연결시키는 기능만 있어서 굳이 EntryPoint까지 써야하는지에 대한 고민이 있었다.

WebSecurityCog에서 로그인 페이지로의 경로를 

.loginPage("/errorpage")

으로 수정하여 바로 에러페이지로 가고, 거기서 로그인페이지/홈페이지를 선택할 수 있는 버튼을 만들었다.

다른 팀원분이 하신거를 보고 따라한건데, 수정하면서 내내 왜 이생각을 못했지라고 생각했다.

 

3. 댓글 수정/삭제 버튼 수정

댓글 수정/삭제 버튼이 가장 최근 것만 안보이는 문제를 발견했다.

해당 댓글의 아이디와 로그아웃/혹은 로그인한 사용자의 아이디와 일치하지 않으면 hide하도록 해놓았는데, 해당 코드가 가장 최근 댓글에만 적용되는 것 같았다.

다른 분들의 방법을 듣고 fucntion밖에서 show/hide설정도 해보고 버튼 구역을 나누어 붙여봤는데도 잘 되지 않았다.

그래서 아에 2가지 버전의 temphtml을 만들고 처음에 붙일 때 조건에 따라 다르게 했더니 잘 작동하는 것을 확인하였다.

 

4. 테스트 코드

테스트 코드는 금방 할 줄 알았는데 생각보다 시간이 많이 걸렸다.

심화 강의 참고해서 만들었는데, @mock을 실제 어떻게 쓰는지 이해가 되지 않았다.

유효성 검사를 위해 별도로 클래스+메소드를 만들어서 회원가입 전에 검사를 거치게 하였다.

중복 아이디 체크는 Repository를 사용하는데, static으로 만든 유효성 검사 메소드 안에서는 repository가 사용이 안되서 별도로 분리했다.

프론트에서 중복검사 요청시 작동하는 메소드에 대해서는 테스트코드를 만들었는데 사실상 같은 함수로 값을 설정하고 검사하는 거라 동어반복 같았다...

이부분에서 에러를 던지니 프론트에서 회원가입 중에 아에 서버가 다운되서 다른 방법이 필요할 것 같다.

(이글을 쓰는 다음날 아침 해결하긴 하였다.)

 

빨리 과제 끝내고 남은 심화강의를 들으려고 했는데 가능할지 모르겠다.

어찌어찌 과제를 하긴 했는데 공부할게 너무 많아서 머리에 과부하가 걸려있는 느낌이다. 으으

'항해99 > 개발일지' 카테고리의 다른 글

20220204 개발일지  (2) 2022.02.06
20220203 개발일지 #개인과제 정리  (0) 2022.02.03
20220131 개발일지 #@Valid  (0) 2022.02.01
20220129 개발일지  (0) 2022.01.29
20220128 개발일지  (0) 2022.01.29