nodejs - cookie-parser를 이용한 조회수 중복 방지

김예지·2021년 8월 5일
0
post-custom-banner

우리의 경우 게시판이 두 종류가 있고, 각각 조회수 기능을 추가하려고 했다.
하지만 그저 클릭할때마다 무한히 올라가는 조회수는 오히려 의미없다고 판단되어, 조회수 중복방지에 대한 구현에 대해 알아보았고, cookie-parser를 이용해 한 유저가 조회수를 여러번 올리는 것을 일정 시간동안 방지할 수 있었다.
사용하는 라이브러리는 다음과 같다.

npm install cookie-parser 
npm install request-ip 

app.js에 설정해주는 것은 다음과 같다.

const cookieParser = require("cookie-parser");
app.use(cookieParser());

게시글을 불러오는 라우터에는 다음과 같이 설정해주었다.

//게시글이 없을 경우에 대한 예외처리를 전부 한 뒤
 if (req.cookies["f" + post_id] == undefined) {
   res.cookie("f" + post_id, getUserIP(req), {
     maxAge: 1200000,
   });
   await result.update({ view_count: result.view_count + 1 });
 }
res.status(200).send({
  result,
  ok: true,
});

우리는 위에 말했듯이, 게시판의 종류가 두 종류(free, univ)라서, 각각의 post_id에 해당하는 u, f를 붙였다. 만약 해당하는 value의 쿠키가 존재하지 않으면 유저에게 쿠키를 발급해주고 조회수를 1 업데이트시켜주게 된다.
insomnia로 테스트 한 결과는 다음과 같았다.

free board 1번 게시물에 대한 조회 쿠키는 f1로 발급이 된다. user가 해당하는 부분을 조작하기 어렵도록 encoding을 할 지 고민중이다. :)

참고 : https://velog.io/@ysong0504/Node.js-Cookie%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A1%B0%ED%9A%8C%EC%88%98-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0 (윤송 짱)

profile
새싹
post-custom-banner

1개의 댓글

comment-user-thumbnail
2021년 8월 6일

예지님은 빛입니다! 빛예지님!

답글 달기