Ответ 1
Например, если вы используете authentication_classes = (TokenAuthentication,)
в своих представлениях API, вы можете добавить конечную точку в GraphQLView, оформленный следующим образом:
urls.py:
# ...
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import authentication_classes, permission_classes, api_view
def graphql_token_view():
view = GraphQLView.as_view(schema=schema)
view = permission_classes((IsAuthenticated,))(view)
view = authentication_classes((TokenAuthentication,))(view)
view = api_view(['GET', 'POST'])(view)
return view
urlpatterns = [
# ...
url(r'^graphql_token', graphql_token_view()),
url(r'^graphql', csrf_exempt(GraphQLView.as_view(schema=schema))),
url(r'^graphiql', include('django_graphiql.urls')),
# ...
Обратите внимание, что мы добавили новую ^graphql_token
точку ^graphql_token
и сохранили исходную ^graphql
которая используется инструментом GraphiQL.
Затем вы должны установить заголовок Authorization
в вашем клиенте GraphQL и указать graphql_token
точку graphql_token
.
ОБНОВЛЕНИЕ: посмотрите эту проблему GitHub, где люди предложили альтернативные решения и полные рабочие примеры.