小编典典

如何将Graphene GraphQL框架与Django REST框架一起使用

python

我在Django中有一些REST API端点,我想对Graphene使用相同的身份验证。该文档不提供任何指导。


阅读 222

收藏
2021-01-20

共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了GraphiQL工具使用的原始端点。

然后,您应该Authorization在GraphQL客户端中设置标头并指向graphql_token端点。


更新:请参阅此GitHub问题,其中人们提出了替代解决方案和完整的工作示例。

2021-01-20