Я создаю API, используя Django и GraphQL (graphene django). Для аутентификации пользователей я использую JWT (https://django-graphql-jwt.domake.io/en/latest/). Затем я также использую Relay.
Теперь, как лучше всего обрабатывать разрешения в запросах и изменениях? Допустим, у меня две модели (Products
и Transactions
). Обычные пользователи могут выполнять как запросы, так и изменять products
. Однако Transactions
должен быть ограничен и доступен только администраторам / персоналу.
На веб-страницах Graphene Django (https://docs.graphene-python.org/projects/django/en/latest/authorization/) они (среди прочего) обсуждают следующие два варианта:
def get_queryset(cls, queryset, info)
- Is Можно ли здесь проверить авторизацию (используя:
if info.context.user.is_anonymous:
raise GraphQLError('You do not have permission to access this information')
return queryset
)? А для мутаций мы могли бы сделать то же самое в mutate_and_get_payload
.
использовать LoginRequiredMixin - это блокирует весь API. Я хочу заблокировать только части API.