← 전체 글로 돌아가기

웹 개발

권한 설정 때문에 기능이 안 될 때 확인하는 방법

사용자마다 보이는 기능이 다르다면, 단순히 UI 코드의 문제가 아니라 권한 로직과 서버 응답을 함께 봐야 한다.

웹 애플리케이션에서 특정 사용자에게만 기능이 보이거나, 같은 작업인데 어떤 사용자는 성공하고 어떤 사용자는 실패하는 문제가 있다면, 권한 시스템을 확인해야 한다. 이는 보통 프론트엔드 UI 검증만으로는 찾을 수 없고, 서버의 권한 로직과 응답까지 함께 봐야 한다.

재현 조건 명확히 하기

먼저 어떤 상황에서 문제가 나는지 정리해야 한다:

  • 어떤 사용자 역할일 때 문제가 나는가 (관리자, 일반 사용자, 손님 등)
  • 어떤 기능을 실행하려고 할 때 문제가 나는가
  • 에러 메시지가 있는가, 아니면 조용히 실패하는가

로컬 개발 환경에서 테스트 사용자들로 같은 시나리오를 반복해서, 어디서 일관되게 문제가 나는지 파악하자.

서버에서 볼 값: 권한 체크 로그

서버 로그에서 권한 검증이 제대로 이루어지고 있는지 확인해야 한다. 사용자가 어떤 요청을 할 때 서버에서 권한을 확인하는 로그가 있는가? 권한이 없다고 판단했다면 그 이유가 명확하게 기록되어 있는가?

프로덕션이라면 권한 로그를 따로 수집하는 것이 좋다. 문제가 발생했을 때 "이 사용자는 이 시간에 이 작업을 시도했고, 권한이 없어서 거부되었다"는 기록을 빠르게 찾을 수 있기 때문이다.

프론트엔드에서의 권한 확인

프론트엔드에서도 권한을 확인할 수 있다. 사용자 객체에 권한 정보가 있다면, 그것을 정확히 읽고 있는지 확인해보자.

npm run build

빌드 후 브라우저 개발자 도구의 콘솔에서 현재 사용자 객체를 출력해보면:

console.log(currentUser); // 권한 정보가 제대로 있는가

권한 데이터가 있는데 UI에는 반영되지 않았다면, JavaScript 로직이 잘못된 것이다. 권한 데이터가 없다면, 서버에서 제대로 전달하지 않은 것이다.

로컬과 운영 환경의 설정 비교

권한 문제가 로컬에서는 없는데 운영에서만 나타난다면, 환경 설정의 차이일 가능성이 높다:

  • 역할 정의가 다를 수 있다 (로컬에서는 모든 사용자가 관리자인 테스트 설정)
  • 권한 데이터베이스가 다를 수 있다
  • API 응답 형식이 다를 수 있다

운영 서버의 권한 설정을 로컬 개발 환경에 복사해서 테스트해보자.

실수하기 쉬운 포인트들

가장 흔한 권한 버그들:

  1. 권한 캐시 만료: 사용자의 권한이 바뀌었는데 캐시된 권한 정보를 계속 사용하는 경우
  2. 역할과 권한의 혼동: 역할(role)과 권한(permission)을 제대로 분리하지 않은 경우
  3. 조건부 렌더링 빠뜨림: UI는 숨겼지만 백엔드 검증을 빼먹은 경우
  4. 환경 변수 누락: 운영 서버에서만 특정 권한 변수가 설정되지 않은 경우

수정 후에는 다시 같은 사용자들로 테스트해서, 정말로 의도한 대로 작동하는지 확인해야 한다.