본문 바로가기
트러블 슈팅

인증 토큰: 관리자와 사용자 간의 인증 비교

by Shark_상어 2023. 12. 30.
728x90

이 글은 회사 프로젝트 중 관리자 와 사용자 간의 토큰 보유 및 미보유 상황에서의 허용 되는 메소드를 다르게 해줘야 하는
상황이 발생 했다. 이를 DRF 토큰( Django REST Framework Token) 으로 해결 하는 방법이 무엇이 있을까 방법을 강구 하다가 알게된 점을 글로


적어 보고자 한다.

밑에는 트러블 슈팅 전 상황에 대한 설명 및 토큰 인증 에 대한 해결 책 이다.

1. 관리자: 토큰 보유

관리자는 토큰을 보유하고 있다.
관리자에게는 흔히 말하는 CRUD, 즉 GET, POST, PUT, DELETE를 모두 허용 해야했다.

2. 사용자: 토큰 미보유

일반 사용자는 토큰을 보유 하고 있지 않다.
하지만, 홈페이지 내에 GET 및 일부 POST를 허용 해야 했다.

백엔드 개발자 로서 해결 해야 하는 과제는

1. 토큰 인증(토큰이 있는자 와 없는자의 비교)
2. 1번에서의 허용 되는 메소드를 어떻게 분리 할 것인가?
3. 다른 방법은 없었는가??(미 해결 과제)

3. 토큰 인증과 권한 해결법

다음과 같이 해결 하고자 하였다.

메소드에 따른 인증 방법 구별
메소드에 따른 인증 방식 가져오기

이 방식은 유지보수 OR 가독성이 떨어 진다 판단하였고 동적 방법보다는
정적 방법으로 전환 하였다.

정적 인증 방식
import
정적방식으로 변경

TokenAuthentication 이라는 클래스를 그대로 상속하여 만들었다.

또한, 권한이 있는지 체크!

안전한 메소드를 제외하고 허용 해줫고 나머진 관리자인지 체크하는 함수

 

메소드에 따른 권한을 체크!(가독성 떨어지므로, 바꿀 예)
동적으로 메소드에따라 권한 체크

 

이로써 사용자 와 관리자 모두 토큰이 보유 및 미보유 상태에도 GET 메소드를 통해 데이터를 가져올수 있게 되었다.
하지만, 사용자에게 일부 POST를 허용 해줘야 하는 상황에서는

POST에 따른 인증 허용!
권한 허용


다음과 같이 작성 하여 인증 과 권한을 토큰의 보유 및 미 보유 인 상태에서도 해결 할 수 있게 되었다.
많이 부족한 해결법 이다.. 더 많이 고민하고 공부하여 더 좋은 솔루션을 찾을 수 있도록... 아자아자!!

4. 더 좋은 트러블 슈팅

  • 더 좋은 트러블 슈팅 방법은 없는가?? 에 대해서 고민하고 있다.
  • 댓글로도 많이 알려주세요.

5. 결론

이렇게 트러블 슈팅 하게 되면서 여러가지 방법을 배우고, 문제 해결 능력 또한 길러 지고 있는것 같지만,

한참 많이 부족한것 같다.
시간이 나면 더 많은 포스트..를 할수 있도록!

사용자의 권한, 인증 및 메소드에 따라 허용 방식을 배 울수 있었고, 현재 는 DRF토큰으로만 했지만
다음에는 JWT으로 토큰을 변경하게 된다면, 어떻게 해결 해야 할지 고민 해야 할 부분이다.

728x90

'트러블 슈팅' 카테고리의 다른 글

고객 검색 최적화 트러블 슈팅  (1) 2024.06.02
STORED 컬럼을 이용한 쿼리 최적화  (0) 2024.03.09
[MySQL] Pagination 방법론  (0) 2024.03.03
RDBMS Index  (1) 2024.02.18
Not json serializable 오류 해결 방법  (0) 2023.04.19