Я использую DRF и OAuthToolkit. Вот мой взгляд: -
class UserDetailView(RetrieveUpdateDestroyAPIView):
serializer_class = UserUpdateSerializer
permission_classes = [TokenHasResourceScope]
required_scopes = ['user_detail']
Теперь вышеприведенное представление будет поддерживать методы GET
, PUT
, PATCH
и DELETE
. Теперь, если я создам токен с областью действия user_detail
, он предоставит доступ ко всем методам. Однако мне нужны разные области чтения / записи для методов SAFE и UNSAFE.
После прочтения OAuthToolkit кода для TokenHasResourceScope
он создает области действия для методов SAFE
и UNSAFE
, то есть user_detail:read
и user_detail:write
.
Теперь, если клиентский запрос для user_detail:read
scope, библиотека возвращает invalid scope
.
Как по-разному поддерживать области для чтения и записи определенного представления?