HOC로 공통 인가 적용하기
· 약 10분
도입
제가 유리하게 편집한 내용입니다. 😉
이직 후 n개월 차. 누군가 나에게 보낸 경고장이다.
원래 기존의 이슈리포터에는 일반 사용자, 운영자로 만 나뉘고 url도 분리가 되어 있었지만, 스프린트를 진행하면서 일반 사용자 별로 볼 수 있는 메뉴와 사용할 수 있는 기능이 다른 권한이라는 기능이 추가 되면서, 해당 페이지에 대한 권한(인가)가 없으면 접근이 불가능하게 개발을 해야하는 상황 이 발생하였다.
이슈리포터에는 이미 수 많은 페이지와 컴포넌트가 존재 했는데 이 작업을 모든 컴포넌트 각각 API를 호출하고, 핸들링 해주기에는 상당히 귀찮은 작업이 예상 되었다.
팀장님에게 도전장을 받은 나는 이러한 상황에서 어떻게 하면 가장 효율적일지 고민을 했다.
본론
먼저, 이슈리포터에 어떤 인가방법을 적용할지에 대한 고민을하기 위해 필요한 이슈리포터의 버전 스펙이다.
이름 | 버전 |
---|---|
Vue | 2.6.14 |
vue-router | 3.2.0 |
필요한 버전 정보만 적었습니다.
그리고 내가 생각해낸 방법 리스트는 아래와 같다.
- Vue-router의
navigation-guards
를 활용한 페이지 이동 - 각 컴포넌트 마다
mounted
에서 권한 체크 후, 페이지 이동 - 처음부터 권한(인가)에 대한 고려를 안했으니, 팀장님이 알아서 하라고 업무 거부하기(?)
- 다른 FE 개발자분에게 떠넘기기(?)
- HOC(고차 컴포넌트)를 활용하여 권한 체크 후, 페이지 이동
고민한 결과 HOC(고차 컴포넌트)를 사용하여 인가 로직을 추가하기로 결정하였다.
경고
최고이자 최선의 방법이 아닐 수 있습니다.