作者:吴柏盈4477 | 来源:互联网 | 2022-12-12 10:16
Django有两种方法。
常规DRF将用户限制在中间件级别。因此,未登录的用户无法访问任何内容。
相反,GraphQL使用“每个方法”方法。因此中间件传递所有请求和每种方法。但是之后方法调用装饰器。
我想实现第一种方法,但要使用GraphQL。但是在那种情况下,我需要打开登录突变的路径。如何从有效载荷中提取突变名称?
1> Mark Chacker..:
如果您想将GraphQL API端点限制为Django登录用户,则可以通过使用以下方法扩展GraphQLView来做到这一点: LoginRequiredMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from graphene_django.views import GraphQLView
class PrivateGraphQLView(LoginRequiredMixin, GraphQLView):
"""Adds a login requirement to graphQL API access via main endpoint."""
pass
然后将此视图添加到urls.py
喜欢的
path('api/', PrivateGraphQLView.as_view(schema=schema), name='api')
按照docs的通常方式。
如果您不想保护整个API,则可以为未受保护的查询和变异创建另一个架构和终结点,从而可以将两者明确分隔。例如在urls.py中:
path('public_api/', GraphQLView.as_view(schema=public_schema), name='public_api')
请注意,每个API端点必须至少有一个查询才能工作,否则将导致断言错误。