qna 피드백 (미션-6)
이번 미션은 페이징 미션이다.
페이징은 굳이 class까지 만들어해주고 싶은 생각이 없어서 handle bars의 helper를 이용해 구현을 했다.
또 답변 삭제, 질문 등록 시 더블 클릭이 되면 중복 요청이 나가서 그 부분을 수정을 진행했다.
이번 피드백은 dion이 담당해 주셨다.
1 페이지 노출은 페이지를 1부터 시작하고 싶어서 만들다 발생한 버그였다.
먹통 버그는 더블클릭 버그를 해결하다가 변수명을 잘못 작성해 일어난 버그였다. community 버전에서 js는 다루기가 쉽지 않다.
밑의 페이지 블록을 1부터 시작하기 위해 생겨난 if문이었다. 해결은 따로 helper를 만들어 사용하도록 했다.
이 부분은 생각지 않았었다. 확실히 dion이 말씀하신 설계가 더 좋은 것 같다.
미래의 나를 위해서 분리를 행했다.
homeController는 service를 참조하지 않아도 되고 좋다.
더블클릭 버그 부분이다.
answerCount가 음수로 내려가면 안 된다고만 생각했었다. 그래서 DB에 제약조건을 걸어줬었다.
근데 음수로만 내려가지 않지 실제 답변의 개수와는 차이가 발생할 수 있었다.
그래서 javaScript를 작성해서 더블 클릭을 막았었다. flag를 세워서 막았었는데, 찾아보니 클라이언트 쪽에서 js를 수정하면 요청이 들어올 수 있다는 것이다.
그래서 서버 쪽에서 해결방법을 찾아보았다.
해결 방법은 위의 캡처에 작성해 두었다. 근데 이게 page의 고유한 값을 클라이언트가 임의로 여러 개를 만들어 사용할 수 있지 않을까?라는 생각도 들었다. 보안은 어렵다. 어려워
stackoverflow.com/questions/442678/preventing-double-http-post
Preventing double HTTP POST
I have made a little app for signing up for an event. User input their data and click "sign me in". Now sometimes people are double in the database, the exact same data that got inserted 2 times ...
stackoverflow.com
js 쪽인데 이제 var 말고 let을 쓰는 것으로 바뀌었다고 한다.
js는 잘 몰라서 나중에 공부해 봐야겠다.