본문 바로가기
회고

20231115 퇴근 전 TIL

by growingTangerine 2023. 11. 15.

- 어드민 페이지 권한 관리 코드를 수정하는 업무를 했다. 권한별로 접근 가능한 경로를 컨트롤하는 것이 task였다. 

 

사이드바에서 보여주는 페이지가 각각 부모-자식 관계로 연결되어 있는데, 해당 경로 내에서 CRUD를 위해 이동하는 경로는 API로 받아오는 권한별 경로에 존재하지 않는 상태였다. 

 

ex) 

'/notice' 는 허용 경로에 존재하나

'/notice/create', '/notice/update/21' 

등의 경로는 존재하지 않는 상태. 

 

 

이 상황에서

1. 백엔드 단에서 모든 경로를 추가하여 API로 받아와서 처리하기

2. 프론트엔드 단에서 매핑하여 경로 처리하기

 

이 두가지 방법이 있었는데, 이미 CRUD는 백엔드에서 미들웨어를 통해 권한 체크하여 동작하므로, 하위 경로들은 매번 추가해주기보다는 프론트엔드에서 매핑하여 사용하는것이 더 낫다는 결론!

 

또한, 해당 어드민 페이지의 유저 대상이 슈퍼어드민만 해당해서, 굳이 권한 경로 관리가 복잡해질 필요성도 없었다. 

 

권한관리 파트는 처음 다뤄보는데, 

 

리액트 라우터를 활용한 권한별 라우팅 제어

라우팅 로직을 만들때 매번 들어가는 것이 인증과 인가이다. 이 둘은 비슷하면서 엄연히 다른데 인증(Authentication)은 사용자를 식별하는 것이고, 인가(Authorization…

jeonghwan-kim.github.io

 

이렇게 두 가지 글을 참고하기도 했음!

 

그래서 프론트엔드단에서 처리하기로 하고, 이때도 두 가지 방법을 고안했다.

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