Ich habe einige REST-API-Endpunkte in Django und ich würde gerne the same authentication für Graphen verwenden. Die documentation bietet keine Anleitung.Wie Graphen GraphQLramework mit Django REST Framework Authentifizierung verwenden
15
A
Antwort
15
Zum Beispiel, wenn Sie authentication_classes = (TokenAuthentication,)
in Ihren API-Ansichten verwenden, sollten Sie einen Endpunkt zu einem GraphQLView auf diese Weise geschmückt hinzufügen:
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(['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')),
# ...
beachten Sie, dass wir einen neuen ^graphql_token
Endpunkt hinzugefügt und das ursprüngliche ^graphql
beibehalten, das vom GraphiQL-Tool verwendet wird.
Dann sollten Sie den Header Authorization
in Ihrem GraphQL-Client festlegen und auf den Endpunkt graphql_token
zeigen.
3
Hinzufügen einige zusätzliche Schritte, die ich nehmen musste, wenn im Anschluss an diese Integration:
class RTGraphQLView(GraphQLView):
def parse_body(self, request):
if type(request) is rest_framework.request.Request:
return request.data
return super().parse_body(request)
Graphene die .body
attr erwartete aber DRF liest es und legt es auf .data
vor zu GraphQLView weitergegeben werden.
Verwandte Themen
- 1. Django Rest Framework Authentifizierung Probleme
- 2. Django Rest Framework Authentifizierung Fehler
- 3. Django Rest Framework-Token-Authentifizierung AngularJS
- 4. Django Rest Framework Postman Token Authentifizierung
- 5. django Rest Framework JWT Authentifizierung mit E-Mail und Passwort
- 6. Wie kann ich die Authentifizierung in Django REST Framework deaktivieren?
- 7. Django REST-Framework: Token-Authentifizierung mit HTML-Frontend
- 8. Google-Authentifizierung mit Django-Rest-Framework und Python-Social-Auth
- 9. Testen von POST mit Authentifizierung in Django Rest Framework
- 10. Testen der Authentifizierung mit REST Framework JWT?
- 11. Verwenden von Modellen in Django-Rest Framework
- 12. Django REST-Framework: Verwenden Sie OneToOneField nicht
- 13. Django-REST-Framework: Verwenden von TokenAuthentication mit durchsuchbarer API
- 14. Ermitteln Erstbenutzer authentifiziert mit Django Rest Framework
- 15. ManyToMany mit Django Rest Framework
- 16. Testen eines API-Endpunkts mit Django-rest-framework mit Django-oauth-toolkit zur Authentifizierung
- 17. Wie macht Django rest_framework Session-Authentifizierung case insensitive? Django Rest Framework Standardauthentifizierung mit dem folgenden Code
- 18. django Rest Framework RetrieveUpdateAPIView
- 19. django Rest Framework attributerror
- 20. Django Rest Framework Benutzerregistrierung?
- 21. Django Rest Framework Versionierung
- 22. Django-REST mit Remote-JWT-Authentifizierung
- 23. Verwenden von unendlichem Scrollen mit Django Rest Framework?
- 24. Verwenden von benutzerdefinierten Methoden im Filter mit Django-Rest-Framework
- 25. Wie Hyperlinked in Django Rest Framework zu verwenden?
- 26. Authentifizierung fehlgeschlagen django Rest Rahmen
- 27. Eine Seite Abfrage mit django-rest-framework
- 28. Django Rest Framework JWT-Authentifizierungstest
- 29. Django REST Framework - CurrentUserDefault Verwendung
- 30. Django Rest Framework Datei hochladen
Funktioniert das noch für Sie? Ich versuche, das gleiche mit SessionAuthentication zu tun, aber ich bekomme einen Fehler zurück von Graphen-Django, wenn es versucht, den Körper der Anfrage zu lesen? – Joe
Funktioniert immer noch, aber ich habe nicht die aktuellsten Versionen von Paketen. Meine Antwort verwendet: Django == 1.8.3 djangorestframework == 3.2.2 django-graphiql == 0.4.4 Graphen == 0.10.2 graphql-Kern == 0.5.3 graphql-django-view = = 1.3 graphql-relay == 0.4.4 –