• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

동일 url 권한 처리

21.10.19 16:24 작성 조회수 197

1

안녕하세요. 좋은 강의 감사합니다.

동일 url 로 접근하는데 권한마다 보여주는 화면이 다른 경우(예를 들면 관리자 페이지 버튼 유무 등)에는 프론트에서 user 정보를 가져와서 권한을 확인하고 특정 메뉴를 렌더링 할지 말지 결정하면 될까요?? 아니면 백에서 권한에 따른 처리를 해주는 것이 일반적인지 궁금합니다.

 

답변 1

답변을 작성해보세요.

0

화면을 어떻게 보여주는 지는 프론트엔드의 책임입니다. 그 유저의 권한은 API를 통해 확인을 하는 것이구요. 화면을 어떻게 보여줄 지를 백엔드가 관여할 만한 부분은 마땅히 없어보입니다.

물론 case by case가 있긴 합니다.

답변 감사합니다.

 

관련하여 추가 질문 드리고 싶은데요.

1. 강의에서 djangorestframework-jwt 를 활용할 때 obtain/verify 할 경우 토큰과 유저 정보가 반환된다고 되어있는데, 유저 정보는 토큰을 base64 로 디코드 해서 확인한다고 이해하는게 맞을까요? 제가 요청을 날렸을 때는 토큰만 반환됩니다.

 

2. jwt payload 에 custom handler 로 추가 정보를 넣을 수 있지만 대부분은 username, pk, email, expiration time 만으로 충분하다고 말씀해주셨는데, 추가적인 유저 정보를 얻고자 한다면 payload 에 담아서 반환하기 보다는 drf 에서 유저 정보를 반환하는 api를 만들고 로그인을 수행한 이후에 해당 api 를 호출하는게 더 적절할까요?

 

감사합니다.

1. 응답 내역과 유효성 검사는 별개입니다. verify 요청에 대한 유효성 검사는 VerificationBaseSerializer를 통해서 이뤄지고 있구요. 이때 token에 대한 expired 여부, 서명 오류 여부, 지정 User의 존재여부, is_active 여부 등을 검사하고 있습니다. 해당 소스코드를 직접 읽어보시기를 권장드립니다.

https://github.com/jpadilla/django-rest-framework-jwt/blob/master/rest_framework_jwt/serializers.py#L82

2. 설계하기 나름일텐데요. 저라면 변경이 되는 정보라면 별도의 API를 만들어서 조회를 하고, 변경되지 않는 정보 (ex: user_id)이며 그 개수가 적다면 응답 payload에 추가를 해볼 수 있을 듯 합니다. // 변경이 되는 정보는 자주 조회가 필요할 수 있을 텐데, 그때마다 토큰을 새로이 발급받아서는 안 될테니깐요.