Get authentication with middleware

express 미들웨어를 통한 인증인가

복잡했다. 최대한 정리해 본다.

목적은 Job API를 사이트에 로그인 한 사용자들만이 사용할 수 있도록 만들기이다.

유저 스키마에 다음과 같은 매서드들을 추가한다

controllers/auth.js

registerlogin controllers로 이루어져 있다.

middleware/authentication.js

이 미들웨어는 app.jsapp.use('/api/v1/jobs', authenticateUser, jobsRouter)에서 사용된다. /api/v1/jobs를 사용하기 위해서는 authenticateUser를 먼저 실행하고 jobsRouter에 접근한다.

authenticateUser에서는 로그인한 사용자의 토큰으로부터 사용자 정보를 받아 req.user에 그 정보를 저장하고 jobs controller에는 해당 req.user에서 userId을 가져와서 그 사용자가 자신의 직업 지원 리스트들을 가져오고, 만들고, 삭제하고, 업데이트하는 기능을 제공한다.

conclusion

redux하면서도 심심치 않게 등장한 개념이 미들웨어였다. 개념을 알고 있어도 정확히 어떤때에 써야했는지 의문을 가지고 있었는데 이 로직을 구현하면서 조금더 이해할 수 있게 되었다.