- 어드민 페이지 권한 관리 코드를 수정하는 업무를 했다. 권한별로 접근 가능한 경로를 컨트롤하는 것이 task였다.
사이드바에서 보여주는 페이지가 각각 부모-자식 관계로 연결되어 있는데, 해당 경로 내에서 CRUD를 위해 이동하는 경로는 API로 받아오는 권한별 경로에 존재하지 않는 상태였다.
ex)
'/notice' 는 허용 경로에 존재하나
'/notice/create', '/notice/update/21'
등의 경로는 존재하지 않는 상태.
이 상황에서
1. 백엔드 단에서 모든 경로를 추가하여 API로 받아와서 처리하기
2. 프론트엔드 단에서 매핑하여 경로 처리하기
이 두가지 방법이 있었는데, 이미 CRUD는 백엔드에서 미들웨어를 통해 권한 체크하여 동작하므로, 하위 경로들은 매번 추가해주기보다는 프론트엔드에서 매핑하여 사용하는것이 더 낫다는 결론!
또한, 해당 어드민 페이지의 유저 대상이 슈퍼어드민만 해당해서, 굳이 권한 경로 관리가 복잡해질 필요성도 없었다.
권한관리 파트는 처음 다뤄보는데,
이렇게 두 가지 글을 참고하기도 했음!
그래서 프론트엔드단에서 처리하기로 하고, 이때도 두 가지 방법을 고안했다.
1. 부모 경로가 권한 허용된 경로라면 하위 경로도 허용한 것으로 인식하도록 코드 작성
2. 권한 허용된 경로들의 object를 만들어 이를 기반으로 페이지 접근 시 권한 여부 체크하도록 코드 수정
gpt한테 물어봐서 각 방법의 장단점을 알아보았다! 이 부분에서 생각보다 많은 도움을 얻을 수 있어서 좋았다.
여러 방법으로 문제를 해결할 수 있을 때, 어떤 것들을 고려하여 해결 방법을 선택해야하는지에 대한 시각이 확장되었다.
1번 방법은
pros
- 상대적으로 간단하여 구현이 쉬움
- hierarchical한 권한 구조일 경우 dynamic 하게 처리할 수 있어 유리함
const
- 특정 경로를 간과하는 등 에러 위험
2번 방법은
pros
- 명확히 허용된 경로를 확인할 수 있음
- 에러 위험이 줄어듦 (허용된 경로를 중앙화하여 관리하므로)
- 유지보수가 상대적으로 쉬움
cons
- 초기 셋업에 공수가 좀 더 듦
- dyamic한 경로를 다루기가 어려움
=> 2번째 방법을 선택했고, dynamic한 경로의 경우를 처리해주는 로직을 추가해 단점을 보완했다.
'회고' 카테고리의 다른 글
20231122 퇴근 전 TIL (1) | 2023.11.22 |
---|---|
20231120 퇴근 전 TIL (1) | 2023.11.20 |
20231114 퇴근 전 TIL (1) | 2023.11.15 |
20231113 퇴근 전 TIL (0) | 2023.11.13 |
20231109 퇴근 전 TIL (4) | 2023.11.09 |